草庐IT

gtest_valgrind

全部标签

c++ - Valgrind 导致长 double 的数字问题

我的代码中有以下函数用于检查数字是否具有允许值(在对数空间中):templatestaticvoidcheck_if_normal(Tt){Tadditive_neutral_element=make_additive_neutral_element();//probabilityisallowedtobe0inlogspace//probabilityalsoisallowedtobe-infinlogspaceif(!std::isnormal(t)&&t!=0&&t!=additive_neutral_element)throwstd::underflow_error("Prob

c++ - Valgrind 在 C++ 代码中显示意外输出

在C++代码的开头,我初始化了一个包含1000000(一百万)个bool类型数据的vector。但是,在valgrind中,最大堆+堆栈使用量显示为200Kb。鉴于Bool是1字节,它不应该是1Mb吗?是否有我没有意识到的优化?还是我遗漏了什么?提前致谢我使用的是Ubuntu6416.04系统。编译没有-O参数的代码。编辑:代码可以简化成这样,vector*isPrime;intmain(){isPrime=newvector(1000000,true);}Edit2:似乎有一个我没有意识到的优化(在评论中说明)。谢谢。 最佳答案

c++ - 寻找一种在运行时检测 valgrind/memcheck 而不包括 valgrind header 的方法

Valgrind/Memcheck可能很密集,会导致运行时性能显着下降。我需要一种方法(在运行时)检测它,以便禁用所有辅助服务和功能,以便在24小时内执行检查。我不希望将任何显式标志传递给程序,但那是一种方式。我尝试在符号表中搜索(通过abi调用)以查找valgrind或memcheck符号,但一无所获。我尝试检查堆栈(通过boost::stacktrace),但那里也什么也没有。 最佳答案 不确定在Valgrind下运行时有不同的行为是个好主意,因为Valgrind的目标是在预期使用情况下断言您的软件。无论如何,Valgrind不

c++ - valgrind + gdb 的 Eclipse CDT 设置

如何在Eclipse中调试使用gdb运行的valgrind?我这样启动程序:A航站楼:valgrindvgdb=yes--vgdb-error=0./a.out它可以像这样从另一个终端调试它:航站楼B:gdb./a.outtargetremote|vgdb但我无法让它在Eclipse中工作...因此,我想在Eclipse中以图形方式执行我可以通过终端B中的命令行执行的操作。我尝试了很多方法在Eclipse中设置调试配置,但我无法让它工作。我最接近的是通过“C++附加到应用程序”,其中我根据这篇文章最后加载了一个自定义的.gdbinit:https://www.eclipse.org/f

c++ - CMake 与多个 gtest 冲突

这是我在StackOverflow上的第一篇文章,如果我的问题有问题,请深表歉意。我是CMake的新手,我在尝试将gtest(GoogleTest)导入C++项目时遇到了问题,该项目在库中使用了现有的gtest目录。我的根CMakeLists.txt文件是这样的(我的更改是在“开始更改”和“结束更改”之间进行的):cmake_minimum_required(VERSION2.6)project(nifi-minifi-cpp)set(PROJECT_NAME"nifi-minifi-cpp")set(PROJECT_VERSION_MAJOR0)set(PROJECT_VERSION

c++ - Valgrind: fatal error :memcheck.h:没有那个文件或目录

我们正在尝试追踪Valgrind报告的C++项目中的条件跳转或移动取决于未初始化的值。调查结果中提供的地址并不是很有帮助,因为它指向GCC扩展汇编block的末尾,而不是导致问题的实际变量。根据Valgrind的EliminatingundefinedvalueswithValgrind,theeasyway,我们可以使用VALGRIND_CHECK_MEM_IS_DEFINED或VALGRIND_CHECK_VALUE_IS_DEFINED包括之后.此外,这些宏或函数显然记录在头文件中(肯定没有它们的手册页)。但是,当我包含时或,结果是:fatalerror:memcheck.h:N

c++ - valgrind 疯了还是这是真正的 std 映射迭代器内存泄漏?

嗯,总的来说,我对Valgrind和内存泄漏分析器还很陌生。而且我必须说,当您开始使用它们时有点害怕,因为您无法停止想知道之前可能有多少漏洞未解决!就这一点而言,由于我不是经验丰富的C++程序员,我想检查这是否肯定是内存泄漏,还是Valgrind正在误报?typedefstd::vectorVector;typedefstd::vectorVectorVector;typedefstd::mapMapVector;typedefstd::pairPairVector;typedefstd::map::iteratorIteratorVector;VectorVectorvv;MapVe

c++ - valgrind 报告对 std::string 的无效读取

我正在编写在树莓派3上运行的代码。在我的日志记录类中出现以下错误。==1297==Invalidreadofsize8==1297==at0x4865D1C:???(in/usr/lib/arm-linux-gnueabihf/libarmmem.so)==1297==Address0x4c8d45cis100bytesinsideablockofsize107alloc'd==1297==at0x4847DA4:operatornew(unsignedint)(vg_replace_malloc.c:328)==1297==by0x49C3D9B:std::__cxx11::basi

c++ - 为什么 valgrind(helgrind) 在我的线程结构上调用虚拟函数时生成 "Possible Data Races"

当我开始学习valgrind(helgrind)工具时,我遇到了一个我未能解决的棘手问题。简单地说,一个用户定义的线程类是用一个虚拟函数创建的,该虚拟函数将被线程的入口例程调用。如果是这种情况,helgrind将报告Possible-data-race。但是在简单地省略virtual关键字之后,就不会报告此类错误。怎么会这样?我的代码有什么问题吗?或者有解决方法吗?以下是演示此类问题的简单线程应用程序,包括helgrind报告的cpp、Makefile和消息。/*main.cpp*/#include#includeclassthread_s{public:pthread_tth;thr

c++ - 解释 valgrind 错误

我正在尝试使用valgrind调试我的代码。我收到的大部分消息是:Conditionaljumpormovedependsonuninitialisedvalue(s)或Invalidreadofsize8我主要担心第一个问题,如果该值确实未初始化,我相信会发生段错误。我通过将相同的指针连同指向另一个函数的未初始化指针一起发送到我知道会引发段错误的函数来测试这一点,只有真正未初始化的指针才会导致段错误。此错误消息的含义也可能是什么。另外,第二个错误是什么意思?编辑1这是一个模型代码,会给出错误1(假设头文件是合法的)吗?a.cppBb;Cc;intmain(){return0;}B.c