草庐IT

gtest_valgrind

全部标签

c++ - gTest 和多个 main()

我有一个Eclipse项目。所有测试用例都在一个*.cpp文件中。问题是这样我最终得到了两个main()函数。一个用于应用程序本身,一个用于测试用例。当然,Eclipse拒绝构建...我想将所有内容放在一个项目下(并避免使用多个配置、SVN存储库等)。理想情况下,我想强制Eclipse构建两个可执行文件(一个用于应用程序,一个用于测试用例)。我快速浏览了EclipseMakefile,但老实说,我不太明白它究竟是如何工作的。总是排除Main.cpp/Testcases.cpp并构建一个可执行文件是可能的,但它不是很优雅......谁有类似经历? 最佳答案

c++ - Valgrind 检测 strlen 中的无效读取

我正在使用Valgrind来检测我的库中的内存泄漏/错误,这是我第一次使用它。这似乎表明std::string中存在一些无效读取。这是错误信息的开头==16214==Invalidreadofsize1==16214==at0x402701D:strlen(mc_replace_strmem.c:282)==16214==by0x40E53AA:std::basic_string,std::allocator>::basic_string(charconst*,std::allocatorconst&)(in/usr/lib/i386-linux-gnu/libstdc++.so.6.

c++ - gtest,对 'testing::Test::~Test()' 的 undefined reference ,testing::Test::Test()

我使用apt-getinstalllibgtest-dev安装了gtest我正在尝试检查它是否有效。所以我在eclipse中编写了简单的测试代码。但是有错误,undefinedreferenceto'testing::Test::~Test()'undefinedreferenceto'testing::Test::Test()'相反,如果我将ATest类的继承更改为protected,错误就会消失,但是出现其他错误testing::Testisinaccessiblebaseof'ATest_AAA_Test'怎么了?#include#includeclassA{public:int

c++ - gtest 的 undefined reference

为什么下面的ASSERT_EQ会导致undefinedreferencetoBar::kBar错误?编译:g++a.cc-lgtest-lpthread#includeclassBar{public:staticconstsize_tkBar=0;};TEST(Basic,Basic){ASSERT_EQ(0,Bar::kBar);}intmain(intargc,char**argv){testing::InitGoogleTest(&argc,argv);returnRUN_ALL_TESTS();} 最佳答案 来自Google

c++ - 在 valgrind 中将 QSharedPointer 与 new[] 一起使用会产生 "Mismatched free()/delete/delete[]"

我有以下代码:QPair,int>someclass::somefunction(){intsiz=data_size();QSharedPointerbuffer(newunsignedint[siz]);//Fillthebuffer...returnqMakePair(buffer,siz);}在某些时候,此函数返回的QSharedPointer将超出范围,构造函数中设置的指针将被释放。使用valgrind3.6.1,出现“不匹配的free()/delete/delete[]”错误。我对QSharedPointer的使用有什么问题吗?还是我只能忍受这个valgrind警告?

c++ - Valgrind 能捕捉到各种未定义的行为吗?

换句话说,如果我的程序在没有任何Valgrind错误消息的情况下运行,我能确定我的程序没有未定义行为吗? 最佳答案 这里有一个根本性的错误。Valgrind不是某种理解C++语法语义的静态分析工具,因此知道您何时按照C++标准的规定调用未定义的行为。Valgrind是一种工具,但是当您在内存中执行因程序的未定义行为而导致的操作时,它会提醒您。例如,它会检测您何时访问未分配或已释放的内存,它会检测您何时使用未初始化(或部分未初始化)的值/缓冲区进行系统调用等...打个医学类比,Valgrind检测未定义行为的症状。没有症状并不意味着没

c++ - Valgrind 和内存泄漏

我正在对我的软件进行一些内存分析,并在使用valgrind的以下命令运行标准内存泄漏检查后valgrind--tool=memcheck--leak-check=full./path_to_program我得到以下总结:==12550==LEAKSUMMARY:==12550==definitelylost:597,170bytesin7blocks==12550==indirectlylost:120bytesin10blocks==12550==possiblylost:770,281bytesin1,455blocks==12550==stillreachable:181,189

c - Valgrind 报告一个非常简单的 C 程序的错误

我正在从LearnCTheHardWay学习C语言.我在exercise6虽然我可以让它工作,但valgrind报告了很多错误。这是文件ex6.c中精简的最小程序:#includeintmain(intargc,char*argv[]){charinitial='A';floatpower=2.345f;printf("Characteris%c.\n",initial);printf("Youhave%flevelsofpower.\n",power);return0;}Makefile的内容就是CFLAGS=-Wall-g。我用$makeex6编译程序(没有编译器警告或错误)。使用

c++ - valgrind "Killed"消息

我正在运行的程序失败并出现中止陷阱(错误代码12)。为了调试错误,我正在运行valgrind,但每次我运行它时,valgrind本身都会崩溃,并显示一条“Killed”消息,没有其他消息(结束消息堆摘要等不显示)。我在谷歌或SO上找不到任何关于此的信息,我希望有人能阐明导致此错误的原因以及如何调试它。感谢任何帮助! 最佳答案 我认为您的进程可能会被内核的内存不足系统杀死-当系统内存不足时会以一种无法捕获的方式硬杀死进程,这就是为什么valgrind什么都不说就退出的原因.大概你的程序使用了大量内存,当在valgrind下运行时需要额

c++ - 带有 stringstreams 的 strdup 导致 valgrind 错误

我有以下问题:我正在编写一个必须环绕C库的C++程序,所以当我与库交互时,我总是必须使用char*而不是std::string用于所有操作。为了尽可能避免使用char*,我使用stringstreams进行格式化,例如:#include#include#include#includeusingnamespacestd;intmain(intargc,char**argv){ostringstreamstr;str就输出而言,程序正确输出“./test+hello”。但是,valgrind给了我很多类型的错误==30350==Invalidreadofsize1==30350==at0x