2011-04-03 67 views
5

我正在做KCachegrind/Cachegrind的第一步。 我在機器A上運行Cachegrind,然後我移動了安裝了KCachegrind的計算機B上的輸出文件。第一個功能未知

我不知道爲什麼,但我總是第一個功能顯示爲(unknown),這是不好的,因爲我有那裏的圖片顯示的使用19.46。 我做錯了什麼?輸出文件是否應該具有所有必要的信息?

  1. 我正在使用匯編標誌-g夠了嗎?我想通過這種方式使用優化版本,但我不知道它是否有效。
  2. 難道這是最好的,如果我運行Kcachegrind在同一臺機器上,我做我的分析?

enter image description here

回答

1

我會檢查這個'未知'功能在您的程序生命期中何時被調用。如果未知函數在main之前調用,那麼它不是你的代碼,你不應該爲此擔心。如果它的主要之後它仍然可能不是你的代碼,但會採取一些更多的調查。

0

你所鏈接的所有庫的調試版本?否則,你不會看到函數調用結束的地方。

  1. 是的-g足以讓你的庫中的調試符號。如果你想調試一些東西,最好不要使用優化。
  2. 如果環境相同,則無關緊要。
+0

mmhh ...好的問題。我使用簡單的-pthread作爲選項以及其他已經使用-g構建的庫。我假設編譯器會爲我做這個,當我給-g..am我錯了嗎? – 2011-04-03 19:39:45

+0

@Abruzzo我認爲這還不夠,但我不確定 – 2011-04-04 05:57:05

0

相同架構的機器A和機器B是否是x86?

如果您沒有相同的體系結構,則Kcachegrind將無法獲得當前計算機上不可用的功能。

Code Profiler for ARM

+1

這個問題在一年前被問到。只是說。 – SigTerm 2012-02-20 07:50:07