Как заставить программу, скомпилированную с помощью '-pg', сбросить статистическую информацию, когда она еще запущена? - PullRequest
2 голосов
/ 13 декабря 2011

Я занимаюсь разработкой на C ++ (g ++) с не открытым исходным кодом lib.каждый раз, когда я запускаю программу, библиотека аварийно завершает работу (она дважды освобождает память).

теперь все в порядке для моей программы.но это плохо для профилирования.Я использую -pg для профилирования программы.В результате сбоя gmon.out не генерируется.поэтому я не могу профилировать его вообще.

Вопрос: Как выполнить профилирование аварийной программы (с помощью gprof).

PS.valgrind подходит для анализа аварийной программы.

С уважением!

1 Ответ

0 голосов
/ 13 декабря 2011

Есть функция, которую вы можете вызывать из вашей программы для вывода данных профиля (та же, которая автоматически устанавливается как обработчик atexit, когда вы связываете с -pg), но я не знаю, как она называется произвольно.

Легче всего сделать это, просто вставив вызов exit(0); в подходящую точку вашей программы. Кроме того, вы можете установить точку останова и использовать call exit(0) в GDB (за исключением того, что отладка программы повлияет на данные профиля, если вы остановите ее в середине).

...