Подсчет вызовов функций по имени или подписи. Gcc, C ++ - PullRequest
4 голосов
/ 18 февраля 2011

У меня есть некоторый написанный на c ++ пакет. Linux, gcc. Я могу изменить процесс компиляции (изменить Makefile, флаги и т. Д.), Но могу не изменить исходный код C ++.

Один запускает пакет с другими параметрами, выполняет работу и завершает работу.

Как считать :
1) Количество вызовов функции с конкретным именем?
2) Количество вызовов функций с конкретной подписью?
3) Количество вызовов функций, в которых один из параметров имеет определенный тип, т. Е. Std :: string (тип определяется подписью)?
4) и extra Количество вызовов функций объектов STL, т. Е. Std :: string copy constructor?

(я имею в виду подсчет количества звонков во время пробега.)

Я думал сделать это с помощью GDB, но мне было очень трудно выполнить (1), и я вообще не нашел, как это сделать (2) - (4).


Все приемлемые ответы я напишу здесь для человечества.

Ответы [ 2 ]

4 голосов
/ 18 февраля 2011

Вы можете попробовать запустить DTRACE под Linux. Это определенно отличный инструмент для того, чего вы пытаетесь достичь.

2 голосов
/ 18 февраля 2011

Проверяли ли вы Valgrind callgrind ?

Если вы не используете многопоточность (или хотите немного поэкспериментировать), gprof довольно просто в некоторых случаях,Тем не менее, существует обходной путь для многопоточности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...