2009-08-17 19 views
6

當象徵性的崩潰報告,我注意到行號關閉。我在一個項目中測試了這個項目,我故意導致崩潰。看起來生成的行號不包括某些行,例如註釋行或編譯器預處理器語句(不知道它的作用和不包括)...如何在符號化的崩潰報告(iPhone/Mac)中獲取正確的行號?

是否有一種簡單的方法可以從符號化的崩潰報告中的「關閉」行號獲取實際的代碼行來源?

編輯: 在symbolicated崩潰報告行的例子:

7 Luisterpaal 0x00005de2 -[SWFMP3 connection:didReceiveData:] (SWFMP3.m:320) 

所以,行號320幾乎是正確的,但不完全是。這是幾行關...

回答

6

總之......沒有。如果你在一個崩潰報告看着這樣一行:

0 com.apple.CoreFoundation 0x95cb046b CFArrayAppendValue + 43

的 「+43」 是不是行號,但一個從函數開始的內存位置。編寫它的代碼根本不存在於編譯後的二進制文件中 - 編譯器會優化和更改代碼(至少在Release版本中),因此它通常與您編寫的代碼不匹配。

不幸的是,解決方案是爲遇到崩潰的人提供一個可以遠程調試的調試版本,或者至少拋出NSLog()語句來幫助跟蹤它,和/或編寫更小的方法。

+2

Upvoted for「write smaller methods」:) – rpetrich 2009-08-17 12:22:26

+0

我的意思是象徵性的崩潰記錄的數字例如「320」: 7 Luisterpaal 0x00005de2 - [SWFMP3 connection:didReceiveData:](SWFMP3.m:320) – 2009-08-21 19:17:36

3

Technical Note展示如何與僅僅是因爲我一直在尋找的代碼比彙編成墜毀二進制更新的版本代碼

+0

我無法獲得更準確的行數,但這是一個加入書籤的殺手資源。 – ckhan 2012-05-02 01:39:03

0

我有這個問題太,但報告。當我回到我的源歷史記錄並找到相應版本的源代碼時,行號完全匹配。

相關問題