标签: valgrind

Valgrind不会返回源代码行!

我已经尝试在我编写的应用程序上运行valgrind(memcheck和massif),但我得到的只是执行函数的地址.

---------------------------------
Context accounted for  0.6% of measured spacetime
  0x805F29A: (within prog_name)
  0x8141740: (within prog_name)

Called from:
   0.6% : 0x812E077: (within prog_name)

---------------------------------
Context accounted for  0.5% of measured spacetime
  0x805F29A: (within prog_name)
  0x81418FB: (within prog_name)

Called from:
   0.5% : 0x812E077: (within prog_name)
Run Code Online (Sandbox Code Playgroud)

我使用-g标志编译了我的应用程序以放入调试符号. 还有其他原因导致valgrind不显示源代码行吗?

编辑:valgrind版本3.2.1-Debian; g ++ 4.3.1

c++ debugging valgrind

6
推荐指数
1
解决办法
5868
查看次数

boost :: bind()是通过引用还是按值复制参数?

为什么valgrind的DRD工具抱怨"线程加载冲突...大小为4":关于这样的代码:

void SomeFunction(const int& value)
{
    boost::bind(..., value); /* <-- complaines on this line
                                with last backtrace function "new(int)" */
}
Run Code Online (Sandbox Code Playgroud)

boost :: bind()是否按引用或值存储值?

c++ valgrind boost-bind

6
推荐指数
1
解决办法
5501
查看次数

如何在Valgrind中发现被抑制的错误?

我有以下valgrind输出:

==28099== 
==28099== HEAP SUMMARY: 
==28099==     in use at exit: 0 bytes in 0 blocks
==28099==   total heap usage: 131 allocs, 131 frees, 3,472 bytes allocated
==28099== 
==28099== All heap blocks were freed -- no leaks are possible
==28099== 
==28099== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
--28099-- 
--28099-- used_suppression:      2 dl-hack3-cond-1
--28099-- used_suppression:      2 glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
==28099== 
==28099== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
Run Code Online (Sandbox Code Playgroud)

有4个被抑制的错误.虽然这里没有泄漏,但是在移植到另一个系统时创建了问题.

[编辑]

我也重新 valgrind -v 选择了这个 选项.但我没有发现任何错误. …

c memory valgrind memory-leaks memory-management

6
推荐指数
1
解决办法
8745
查看次数

调试boost :: thread应用程序,误报率高

我编写了一个boost :: thread应用程序,我可能会遇到一些竞争条件.我想调试这个程序.因此我使用了以下valgrind工具:

  1. halgrind
  2. DRD

不幸的是,他们的假阳性率很高.因此,下面真正简单的程序valgrind --tool=drd抱怨94错误,其中不应该.因此,通过我复杂的程序,我得到大约15000个错误.所以很难找到实际的错误.

我可以使用以下boost库1.46.0和1.47.0重现此行为.并使用valgrind 3.7.0 SVN和valgrind 3.8.0 SVN.操作系统我尝试了Ubuntu 11.10和Mac OS X 10.7.编译器所在的gcc 4.2.1和gcc 4.6.1.

#include <iostream>
#include <boost/thread.hpp>

void run()
{
    //do some stuff here
}

int main(int argc, char* argv[])
{
    boost::thread thread(run);
    thread.join();
    std::cerr << "main: done" << std::endl;
    return 0;
}
;
Run Code Online (Sandbox Code Playgroud)

你如何调试你的boost程序?还有其他工具可能更适合吗?

似乎版本3.6.1之后的valgrind被破坏了.如果我使用valgrind 3.6.1一切正常.

这里的错误报告来自valgrind --tool=drd:

==60767== Thread 1:
==60767== Conflicting store by thread 1 at 0x100026ec0 size 8
==60767==    at 0x2A316E: pthread_mutex_lock (in /usr/lib/system/libsystem_c.dylib)
==60767==    by …
Run Code Online (Sandbox Code Playgroud)

c++ debugging multithreading valgrind boost-thread

6
推荐指数
1
解决办法
750
查看次数

转储valgrind数据

我在一个运行无限循环的程序上使用valgrind.

由于memcheck在程序结束后显示内存泄漏,但由于我的程序有无限循环,它将永远不会结束.

那么有什么方法可以强制性地从valgrind转储数据.

谢谢

valgrind memcheck

6
推荐指数
1
解决办法
2628
查看次数

程序会在valgrind memcheck中提前终止

我有一个C编程(很多数字,很长,不能发布),我编译

gcc -g -O0 program.c -o program
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用gdb和valgrind memcheck进行调试.在对代码进行一些更改后我发现了

valgrind --tool=memcheck --log-file=output.log ./program
Run Code Online (Sandbox Code Playgroud)

==15866== Memcheck, a memory error detector
==15866== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==15866== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==15866== Command: ./program
==15866== Parent PID: 3362
==15866== 
==15866== Warning: client switching stacks?  SP change: 0xbe88bcd8 --> 0xbe4e1f70
==15866==          to suppress, use: --max-stackframe=3841384 or greater
==15866== Invalid write of size 4
==15866==    at 0x804B7BE: main (program.c:1396)
==15866== …
Run Code Online (Sandbox Code Playgroud)

c gcc gdb valgrind

6
推荐指数
1
解决办法
2848
查看次数

这个valgrind错误是什么意思?

我有一个基本的库,我用它来绘制OpenGL文本,当我使用valgrind确保它是气密的.我一直得到一个不寻常的错误,看起来好像linux c ++库有问题.我想看看你们是否可以发现我的错误或认证我担心的问题,那就是我的c ++库有问题并且需要更换.代码非常简单,但它同时使用OpenGL和FreeImage,因此某些行没有意义.

这是fontsystem.h:

#ifndef FONTSYSTEM_H
#define FONTSYSTEM_H

/*
    The Font System works by loading all the font images (max image size 32px^2) into memory and storing
  the OpenGL texture ID's into an array that can be access at all times. The DrawString() functions will
  search through the string for the specified character requested to draw and then it will draw a quad
  and paint the texture on it. Since all the images are pre-loaded, no loading of the …
Run Code Online (Sandbox Code Playgroud)

c++ linux memory valgrind memory-leaks

6
推荐指数
1
解决办法
3712
查看次数

有没有emacs valgrind接口?

我想知道valgrind及其不同工具是否有可靠的emacs界面?我搜索过,遗憾的是没找到任何东西.

有兴趣通过memcheck跳转到相关的行是很有趣的.

先感谢您.

emacs valgrind elisp

6
推荐指数
1
解决办法
844
查看次数

有没有办法比较两个不同的C/C++程序运行?

所以我正在调试这个程序,这个程序是我从即将毕业的博士生中继承的,或者是在学生完成论文后发生的任何事情.无论如何,现在我有责任进行调试.该程序基本上接受几个文本文件并处理它们.我遇到的问题(段错误)是因为程序试图访问尚未初始化的数组.我想知道是否有任何调试工具可以让你运行程序,并比较程序关闭的两个不同路径.我想我可以手动完成程序,但我宁愿不这样做,因为它相当大,我仍然没有掌握它.我一直在使用GDB和Valgrind(以及使用g ++ -wall来显示警告),这就是我如何做到这一点.

c c++ debugging gdb valgrind

6
推荐指数
2
解决办法
1384
查看次数

Lua C API内存泄漏?(Valgrind的)

我正在尝试编写一个嵌入了Lua的C程序..而且,我尝试了一个非常简单的程序来启动,它只是创建了Lua上下文,然后将其销毁:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
extern "C" {
    #include <lua.h>
    #include <lauxlib.h>
    #include <lualib.h>
}

int main(int argc, char *argv[]) {
    lua_State *L = lua_open();
    luaL_openlibs(L);

    lua_close(L);
    fprintf(stderr, "%s: %d\n", __FILE__, __LINE__);
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

我正在编译它:(我实际上使用的是Torch7,所以..)

g++ -c -g3 -O2 -Wall -Werror -I/usr/local/torch/install/include/ -fPIC pure_lua_test.C -o pure_lua_test.o
g++ -g3 -O2 -Wall -Werror -I/usr/local/torch/install/include/ -fPIC -o pure_lua_test pure_lua_test.o -L/usr/local/torch/install/lib/ -lluajit
Run Code Online (Sandbox Code Playgroud)

当我自己运行时,会打印出来

pure_lua_test.C: 16
Run Code Online (Sandbox Code Playgroud)

正如所料,(就在回归之前).

但是,当我用valgrind运行时,(如valgrind ./pure_lua_test)

我明白了

==9165== Memcheck, a memory error detector
==9165== Copyright (C) 2002-2013, and …
Run Code Online (Sandbox Code Playgroud)

c c++ lua valgrind memory-leaks

6
推荐指数
1
解决办法
1036
查看次数