草庐IT

gtest_valgrind

全部标签

c++ - 最喜欢的Valgrind选项

Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。已关闭8年。我通常使用这个:val

c++ - Valgrind 未显示使用不正确的 c_str() 的无效内存访问

想象一下这样的代码:stringf(){stringr="ab";returnr;}intmain(){constchar*c=f().c_str();printf("%s.\n",c);return0;}这段代码可能会崩溃,对吧?因为c指向的那个字符串被破坏了。但是通过Valgrind运行它不会显示任何无效的内存访问。为什么?我知道Valgrind无法检查堆栈,但“ab”实际上位于堆上,对吧? 最佳答案 Thiscodemaycrash,right?Becausethatstringthatcpointstoisdestroyed

c++ - 如何在 valgrind 中跟踪/捕获 "Warning: invalid file descriptor -1 in syscall close"

valgrind显示以下内容:==13880==Warning:invalidfiledescriptor-1insyscallclose()是否有一种简单的方法来调查此错误?我的意思是-例如显示堆栈跟踪?这是一个巨大的项目,我无法手动检查每个关闭。另外,我想这对于每个系统调用错误的文件描述符都是一样的。我运行它是这样的:valgrind--trace-children=yes--track-fds=yes--log-fd=2--error-limit=no\--leak-check=full--show-possibly-lost=yes--track-origins=yes\--s

c++ - Valgrind 错误 : in use at exit: 72, 704 字节 C++ 初始化列表异常与 char*

问题:我有一个我没想到的奇怪问题。我有一个名为答案的类(class)在标题中是这样的:classAnswer{char*aText;boolb_correct;public:Answer():aText(0){;}//defaultconstructor}主要(测试)驱动程序代码是这样的:intmain(void){staticconstunsignedintMAX_ANSWERS=5;Answeranswers[MAX_ANSWERS];}我得到的(意想不到的)怪事是发生了一个分配,而且我还没有在我的代码中的任何地方使用一个新的。我猜char*正在初始化列表中调用它。我正在使用val

c++ - gtest 中对 testing::internal::EqFailure 的 undefined reference

我正在尝试使用GoogleTest对函数进行测试,现在它不再找到EqFailurething:/usr/include/gtest/gtest.h:1337:undefinedreferenceto`testing::internal::EqFailure(charconst*,charconst*,testing::internal::Stringconst&,testing::internal::Stringconst&,bool)'我正在这样写测试:test_file.cpp:#include#include"tools/CMorphology.hpp"TEST(erode_Mo

c++ - 如何追查内存泄漏 valgrind 说不存在?

我有一个程序,它从套接字接收数据,对其进行一些质量控制和各种其他调节,然后将其写出到命名管道。我在其上运行了valgrind并修复了所有最初存在的内存泄漏。然后,我在一个系统上创建了一个“演示”环境,我在其中运行了该程序的32个实例,每个实例都被提供了唯一的数据,并且每个都输出到它自己的管道。我们对其进行了测试,一切看起来都很好。然后我尝试通过将数据发送速率提高到一个荒谬的速率来对其进行压力测试,一开始看起来还不错……但我的程序一直在消耗越来越多的内存,直到我没有剩余资源。我转向valgrind并运行完全相同的设置,除了每个程序都使用leak-check=full在valgrind中运

c++ - gtest - 测试模板类

我想用gtest测试一个模板类。我在GoogleTestmanual中阅读了有关TYPED_TEST的信息并查看了officialexample他们引用了,但我仍然无法全神贯注地获取在我的测试中实例化的模板类对象。假设有以下简单的模板类:templateclassFoo{public:Tdata;};在测试类中我们声明typedef::testing::TypesMyTypes;现在如何在测试中为MyTypes中列出的Ts实例化类Foo的对象?例如TYPED_TEST(TestFoo,test1){Fooobject;object.data=1.0;ASSERT_FLOAT_EQ(ob

c++ - Valgrind 合法的 "possibly lost"字节示例

我看到valgrind将内存泄漏分为:绝对迷路了间接丢失可能丢失了仍然可以联系到压制我刚刚修复了一个漏洞,其中“可能丢失”是主要问题。documentationsays:"possiblylost意味着你的程序正在泄漏内存,除非你用指针做一些不寻常的事情,这些指针可能会导致它们指向已分配block的中间;请参阅用户手册了解一些可能的原因"我可以知道一个“用指针做不寻常的事情,可能导致它们指向已分配block的中间”的例子吗?我的意思是一个例子,尽管它是由valgrind报告的,但可以忽略“可能丢失”。一个使用指针使valgrind提示但同时以这种方式使用指针在某种程度上是合法的示例谢谢

c++ - 使用 gtest 对 MPI 程序进行单元测试

我正在并行化一个已存在的应用程序,该应用程序将gTest与MPI结合使用。在MPI程序中,首先要做的是通过调用来初始化环境MPI_Init(int*argc,char***argv)在MPI程序结束时,根进程也应该调用MPI_Finalize。我如何使用GoogleTest为此类应用程序编写单元测试?特别是,在gTest修改它们之前,我如何从测试中访问argc和argv。现在我在做:intargc=0;char**argv=NULL;boost::mpi::environmentenv(argc,argv);TEST(component_test,test_name){//stuffu

c++ - 如何使用 gtest 测试具有多个模板参数的 C++ 模板类?

我想用gtest测试一个模板类。我读到了TYPED_TEST在gtest手册中查看他们引用的官方示例(samples\sample6_unittest.cc)。示例中的这个模板只有一个模板参数。但是,我的代码有两个模板参数,我该如何测试呢?我有以下代码://twoelementtypetemplateclassQueueNew{public:QueueNew(){}voidEnqueue(constE&element){}E*Dequeue(){}Fsize()const{return(F)123;}};我为此编写了以下测试代码:templateQueueNew*CreateQueue