gprof:symspec,成员方法和demangled符号名称

时间:2016-05-23 13:50:19

标签: c++ gcc profiling profiler gprof

考虑以下示例:

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()等等。)

有没有办法使用实际未解码的名称来过滤调用图?

0 个答案:

没有答案