考虑以下示例:
struct S {
void foo() { bar(); }
void bar() { }
};
int main() {
S{}.foo();
}
我使用以下方法编译它:
g++ -std=c++11 -g -pg main.cpp
然后我运行它来获取gmon.out
文件。编译完成后,我使用以下行调用 gprof :
gprof -q -b a.out gmon.out
因此我发现有两个符号:
[8] S::bar() [9] S::foo()
他们的名字(如果没有消除(选项--no-demangle
))(至少在我的笔记本电脑上):
[8] _ZN1S3barEv [9] _ZN1S3fooEv
现在我想要从调用图中排除一个符号,并使用以下命令正常工作:
gprof -q_ZN1S3barEv -b a.out gmon.out
无论如何,一旦解码,它就无法使用实际名称,正如关于symspec
所述的联机帮助页所建议的那样,没有指明它们不被解码(它不能使用{{1并且S::bar()
等等。)
有没有办法使用实际未解码的名称来过滤调用图?