2013-02-26 64 views
-1

我只在一個崩潰日誌中注意到這個問題,而且我無法理解爲什麼會發生這種情況。基本上,我已經從客戶那裏象徵了一個崩潰日誌,並且它全部檢查並且正確地標記,,除了一幀,它仍然是非分裂的。下面的代碼片段(第9幀是問題):崩潰日誌缺少一個符號幀

6   libc++abi.dylib  0x00001114 std::terminate() + 20 
7   libc++abi.dylib  0x00002513 __cxa_throw + 123 
8   libstdc++.6.dylib  0x00005ba9 std::__throw_out_of_range(char const*) + 153 
9   MyApp  0x002ff343 0x0000c000 + 3093315 
10   MyApp  0x002ec02b -[ChildViewController tableView:cellForRowAtIndexPath:] (ChildViewController.mm:42) 
11   MyApp  0x0042d725 -[ViewControllerRoot tableView:cellForRowAtIndexPath:] (ViewControllerRoot.m:198) 
12   UIKit  0x0004e54d -[UITableView(UITableViewInternal) _createPreparedCellForGlobalRow:withIndexPath:] + 413 

我試過各種方法來獲得這一行符號化,沒有用。我已經手動運行了atos,以及symbolicatecrash.pl(用於詳細瞭解發生了什麼)。 dSYM和.app文件可以很好地找到,並且在崩潰日誌的二進制映像部分中匹配應用程序的UUID。我在最新的穩定版Xcode 4.6上。其他團隊成員也嘗試過,結果相同。

這裏有什麼問題,或者這是Objective-C動態性質的問題嗎?我相信它是前者,但事實上MyApp的其他框架/符號是象徵性的,讓我更加困惑!

更新:我要澄清,它可能看起來丟失幀可以很容易地推斷出,但也有衆多不同的類,在這一點上,可以所有可能拋出out_of_range錯誤多個呼叫。因此,這個缺失的框架正在使調試更加困難。

回答

2

難道這是被調用的第三方代碼嗎?一些第三方靜態庫不包含符號。

另一種可能性是,此代碼是通過一個靜態庫集成的,該靜態庫是使用Xcode子項目生成的。此項目設置爲從靜態庫中去除符號。

這兩個都會導致在這些調用的崩潰報告中沒有出現符號。

+0

不幸的是,沒有任何靜態庫在棧的這個框架內使用。 – WDUK 2013-02-26 16:15:53

+0

當用atos手動表示符號時,你是否按照此處發佈的規則將正確的地址傳遞給atos? http://stackoverflow.com/questions/13574933/ios-crash-reports-atos-not-working-as-expected/13576028#13576028 – Kerni 2013-02-26 16:36:37

+0

是的,我從'atos -arch armv7 -o MyApp.app得到的輸出。 dSYM/Contents/Resources/DWARF/MyApp 0x002F4343'是0x002f4343(在MyApp中)'。沒有符號信息... – WDUK 2013-02-26 17:16:27