Привет, поэтому я начал использовать gprof для своей работы по профилированию, и она отлично работает, за исключением опции -f, которая позволяет мне указать конкретную функцию для просмотра в графе вызовов.
например
Call graph (explanation follows)granularity: each sample hit covers 4 byte(s) no time propagated
index % time self children called name
0.00 0.00 1/1 __do_global_ctors_aux [13]
[5] 0.0 0.00 0.00 1 global constructors keyed to main [5]
0.00 0.00 1/1 __static_initialization_and_destruction_0(int, int) [6]
-----------------------------------------------
0.00 0.00 1/1 global constructors keyed to main [5]
[6] 0.0 0.00 0.00 1 __static_initialization_and_destruction_0(int, int) [6]
-----------------------------------------------
0.00 0.00 1/1 main [4]
[7] 0.0 0.00 0.00 1 car::DisplayPrice() [7]
-----------------------------------------------
0.00 0.00 1/1 main [4]
[8] 0.0 0.00 0.00 1 car::showc() [8]
-----------------------------------------------
0.00 0.00 1/1 main [4]
[9] 0.0 0.00 0.00 1 car::car(std::string, int) [9]
0.00 0.00 1/1 vehical::vehical(int, int) [12]
-----------------------------------------------
0.00 0.00 1/1 main [4]
[10] 0.0 0.00 0.00 1 car::~car() [10]
-----------------------------------------------
0.00 0.00 1/1 main [4]
[11] 0.0 0.00 0.00 1 vehical::show() [11]
-----------------------------------------------
0.00 0.00 1/1 car::car(std::string, int) [9]
[12] 0.0 0.00 0.00 1 vehical::vehical(int, int) [12]
-----------------------------------------------
Теперь, если я укажу
gprof -f car::car(std::string, int) a.out gmon.out
я получаю ошибку
синтаксическая ошибка рядом с неожиданным токеном ‘(‘
сейчас, если я сделаю
gprof -f car :: car (std :: string, int) a.out gmon.out
я получаю ошибку
Данный файл или каталог отсутствует
если я пытаюсь поместить функцию в двойные кавычки, я получаю вывод, как указано выше, без изменений ..
Может кто-нибудь, пожалуйста, помогите мне с этим ??
заранее спасибо
() берется вашей оболочкой. Попробуйте вот так:
gprof -f 'car::car(std::string, int)' a.out gmon.out
Других решений пока нет …