Linux - 运行 valgrind 时不会出现源文件/行

Linux - source files/lines doesn't appear when running valgrind

本文关键字:源文件 运行 valgrind Linux      更新时间:2023-10-16

我目前正在尝试使用 valgrind 解决一些内存错误,但我在输出信息方面遇到了一些问题,源文件/行号没有出现。所以我有这种输出:

==11656== by 0xA5A095: Class::method(T1, T2) (in /usr/local/bin/MyBinary)

我正在我的 Ubuntu 上使用调试信息(-g标志)和 GCC 4.8.2(也尝试使用 clang 3.4)编译我的程序。我正在使用 cmake 构建系统,因为我想制作几个库,然后制作一些二进制文件。我检查了在编译过程中是否存在-g标志make VERBOSE=1并且确实存在。

我要调试的二进制文件与几个库链接,一个重要且需要调试信息的库是libA,它也与libB和libC链接。 libA,libB和libC是我做的库。它们还使用调试信息进行编译,并且每次都静态链接。

所以依赖方案是:MyBinary <- libA <- libB,libC。

奇怪的是,valgrind 给了我函数名称和命名空间,所以我假设我的二进制文件和库没有被剥离。此外,我检查了从二进制(给定nmaddr2line)中的符号中检索源文件和行号,信息在这里。

用于编译的标志是: -g -std=c++11 ,而对于瓦尔格林德:--leak-check=full --track-origins=yes.

我是否缺少一些用于编译、链接或 valgrind 的标志/选项?我会感到惊讶,问题来自瓦尔格林德......

感谢您花时间阅读我。

我发现了为什么它不起作用。我没有检查...我的磁盘上存在另一个同名的二进制文件......因此,这个问题不再相关。