我正在尝试使用 Ubuntu 12.04 查看带注释的源代码$ valgrind --tool=callgrind ./myProgram
($ kcachegrind
我在$ qcachegrind
使用 Mac OSX 时遇到了同样的问题)。
C++ 脚本myProgram.cpp
调用.hpp
文件中的函数(通过#include "../include/myHeader.hpp"
等)。我这样编译myProgram.cpp
:
g++ -g -o myProgram myProgram.o -l<some third party lib>
我不关心查看该第三方库的注释源。
我想看到的是myHeader.hpp
in和 for 函数的注释源myProgram.cpp
。
相反,我看到了 kcachegrind 的 Flat Profile 窗口,其中列出了所有被调用的函数,包括其中的函数myHeader.hpp
-这很棒。现在,kcachegrind 将函数的位置报告myHeader.hpp
为 from myProgram
-这很奇怪。最后,当我从 Flat Profile 窗口中选择任何功能并请求查看源代码时,我会遇到:
There is no source available for the following function
<name of the selected function>
This is because no debug information is present.
Recompile the source and redo the profile run.
The function is located in the ELF object:
<some location...>
我试过的:
myHeader.hpp
使用 kcachegrind 的 GUI将目录添加到注释列表中。使用 -O0 编译以删除编译器优化