первая функция неизвестна - PullRequest
5 голосов
/ 03 апреля 2011

Я делаю первые шаги с KCachegrind/Cachegrind.Я запускаю Cachegrind на машине A, затем я переместил выходные файлы на машину B, где у меня установлен KCachegrind.

Я не знаю почему, но у меня всегда первая функция отображается как (unknown), и это плохопотому что у меня есть 19.46 использования, как показано на рисунке.Что я делаю не так?Предполагается, что выходной файл содержит всю необходимую информацию?

  1. Я использую флаг компиляции -g Достаточно ли этого?Кстати, я хотел бы использовать оптимизированную версию, но не знаю, работает ли она.
  2. Может ли быть так, что лучше всего запустить Kcachegrind на той же машине, где я выполняю профилирование?

enter image description here

Ответы [ 3 ]

1 голос
/ 02 декабря 2011

Я бы проверил, когда эта «неизвестная» функция вызывается во время жизни вашей программы.Если неизвестная функция вызывается перед main, то это не ваш код, и вам не стоит об этом беспокоиться.Если его после main, то он все еще может не быть вашим кодом, но потребует еще несколько расследований.

0 голосов
/ 20 февраля 2012

Машина A и машина B имеют одинаковую архитектуру, т.е. x86?

Могут возникнуть проблемы, если у вас нет той же архитектуры, что и у Kcachegrind, не будет информации о функции, которая недоступна на текущей машине.

Code Profiler для ARM

0 голосов
/ 03 апреля 2011

Связываете ли вы отладочную версию всех библиотек? Если нет, вы не увидите, где заканчивается вызов функции.

  1. Да -g достаточно, чтобы получить символы отладки в вашей библиотеке. Если вы хотите что-то отладить, лучше не использовать оптимизацию.
  2. Если среда одинакова, это не должно иметь значения.
...