草庐IT

Valgrind

全部标签

c++ valgrind在hello world中显示内存泄漏

这个问题在这里已经有了答案:PRE-2016Valgrind:Memorystillreachablewithtrivialprogramusing(3个答案)关闭4年前。我的程序代码是#includeintmain(intargc,constchar*argv[]){std::cout我是用flags编译的-Wpedantic-pedantic-errors-std=c++11-g-Wall-Wextra在上面运行Valgrind,看到一些奇怪的东西,这个简单的程序有内存泄漏,valgrind--leak-check=full--show-leak-kinds=all命令的输出是==

c++ - 如何从命令行在 OSX 上的 callgrind 输出中获取有意义的函数名称?

目标:我希望能够分析callgrind(以及后来的cachegrind)的输出,并希望在使用callgrind_annotateCLI时看到有意义的变量名。先前研究:我知道Valgrind(http://valgrind.org/docs/manual/manual-core.html)中的dsym标志,并且相信我了解调试符号在osx(LLDBnotshowingsourcecode)上的工作方式。我在这个网站上看到的少数提到这个问题要么没有得到答复,要么是未包含-g标志的情况。理论(可能是错误的...):基于valgrind输出中的“dym=”行,我想知道valgrind是否正在努力

c++ - 这个 Valgrind 错误的原因是什么?

Valgrind正在提示substr调用。stringMessage::nextField(string&input){intposSeparator=input.find_first_of(SEPARATOR);stringtemp;temp=input.substr(0,posSeparator);//Errorpointstothislineinput.erase(0,posSeparator+1);returntemp;}错误是:12个block中的290个字节肯定丢失在丢失记录1of1该函数所做的基本上是解析输入,返回由SEPARATOR字符分隔的字符串部分。这个函数是从另一

c++ - 使用 valgrind 测量缓存未命中

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion我有一个关键路径,它在一个线程中执行,固定到一个核心。我有兴趣确定发生缓存未命中的位置。环顾四周后,valgrind的cachegrind工具似乎对我有帮助。但是,我对该工具在这种情况下的功能有一些疑问:提供的缓存未命中位置有多具体?是否输出变量名?我可以只介绍一个话题吗?是否可以分析代码的特定部分?所有用于测量缓存未命中的功能,它们是否同样适用于TLB未命中?我可以将cachegrind与我的发布/优化

c++ - 如何使用 Kcachegrind 理解 callgrind 的输出

在分析日志时,Kcachegrind显示%ofinclusive为13.92%。它不应该像FAQQ:1中提到的那样接近100%吗???这是配置文件日志的屏幕截图 最佳答案 不一定。main不是您程序的“真正”入口点,前后有很多事情在进行,例如加载/卸载DLL和构建/销毁全局变量(那些是动态初始化的)。这些事情需要时间,尽管通常可以忽略不计。请注意,根据您真正感兴趣的内容,callgrind有一些标志允许在函数开始时开始收集统计信息(例如main)。 关于c++-如何使用Kcachegri

c++ - 如何防止 Valgrind 为每个新线程启动嵌入式 gdbservers?

我正在一个生成数千个其他线程的程序上运行valgrindmemcheck。其他线程不会产生错误,我不关心它们发生了什么。但是,Valgrind坚持在每次产生新线程时在/tmp中打开一个命名管道。这不仅浪费,而且实际上破坏了valgrind。有时valgrind不会自行清理,然后具有相同pid的futurechild(稍后激活)无法产生,因为valgrind无法创建具有正确名称的管道(它已经存在)。我怎样才能阻止Valgrind制作所有这些管道!?!编辑:我已经尝试过的标志:--child-silent-after-fork=yes还有我已经排除的事情:--track-children=

c++ - Valgrind 报告 "brk segment overflow in thread #1"

这个问题在这里已经有了答案:Valgrindreportingasegmentoverflow(5个答案)关闭5年前。我想知道这条消息意味着什么:==18151==brksegmentoverflowinthread#1:can'tgrowto0x4a26000请注意,代码运行良好并且输出正确。我应该忽略这条消息吗?这是什么意思?

c++ - Valgrind: "Invalid read"与 c_str 和 strtod

我正在使用strtod()来转换一些输入字符串。在用valgrind检查我的代码时,我遇到了“大小为8的无效读取”。如果b以“i”或“n”开头,则会显示该消息,这就是我到目前为止所发现的。另外,如果我直接创建一个constchar*(不调用c_str()),strtod似乎也可以。这是代码:#include#includeintmain(intargc,char**argv){char*a=0;std::stringb="i";constchar*c=b.c_str();doubled=strtod(c,&a);}和(详细的)valgrind输出:==12638==Memcheck,a

c++ - valgrind 在使用 https 时报告 libcurl 的问题

所以我有一个通过https与facebook服务器通信的非常基本的示例,但valgrind正在提示。所以我假设我没有设置错误...有人知道我做错了什么吗?这是我的代码:#include#include#includesize_twrite_fn_impl(void*ptr,size_tsize,size_tnmemb,void*data){std::string*result=static_cast(data);*result+=std::string((char*)ptr,size*nmemb);returnsize*nmemb;}intmain(){std::stringurl_f

c++ - Valgrind C++ 内存泄漏

我有这段可演示的代码:#include#includeintmain(){int**matrix=NULL;intc=1,input=0;printf("Enterfirstrowofthematrix:\n");while(!feof(stdin)){input=fgetc(stdin);matrix=(int**)realloc(matrix,1*sizeof(int*));if(matrix==NULL){printf("Troubleswithmemoryallocation!\n");return0;}matrix[0]=(int*)realloc(matrix[0],c*s