C++ gprof:symspec、成员方法和所需的符号名称

C++ gprof:symspec、成员方法和所需的符号名称,c++,gcc,profiling,profiler,gprof,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

考虑以下示例:

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()
他们的名字如果没有被要求(选项<代码>--没有要求<代码>),至少是(在我的笔记本电脑上):

现在我想从调用图中排除一个符号,使用下面的命令它可以正常工作:

gprof -q_ZN1S3barEv -b a.out gmon.out
无论如何,一旦被请求,使用实际名称就不起作用,正如手册页所建议的那样,该手册页说明了关于
symspec
,但没有指定它们不需要被请求(使用
S::bar()
S::bar\(\)
等都不起作用)


有没有办法使用实际的非需求名称来过滤调用图?

很有趣,但它没有回答问题。:-)这就是为什么它是一个评论,而不是一个答案:-)无论你是否得到了你的问题的答案,gprof的期望和现实之间存在着巨大的差距。有趣的是,它并没有回答这个问题。:-)这就是为什么它是一个评论,而不是一个答案:-)无论你是否得到了你的问题的答案,gprof的期望和现实之间存在着巨大的差距。
gprof -q_ZN1S3barEv -b a.out gmon.out