2013-11-27 35 views
3

我的應用程序鏈接了導致崩潰的靜態庫(因此.dSYM文件在此處無用)。我有它的源代碼,所以有可能使用字節偏移來定位源代碼中的相關行?是否有可能使用字節偏移來找到我的ios崩潰堆棧跟蹤的源代碼中的相關行?

以下是崩潰堆棧。我有函數pjsua_acc_set_registration的源代碼,所以有可能找到偏移量1535的相關行?

Exception Type: SIGABRT 
Exception Codes: #0 at 0x38d021fc 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libsystem_kernel.dylib    0x38d021fc ___pthread_kill + 8 
1 libsystem_c.dylib     0x38cb302d _abort + 77 
2 libsystem_c.dylib     0x38c92c6b ___assert_rtn + 183 
3 my app        0x00181cff pjsua_acc_set_registration + 1535 
4 CoreFoundation      0x2e3f53d4 __invoking___ + 68 
5 CoreFoundation      0x2e33f6c7 -[NSInvocation invoke] + 287 
6 CoreFoundation      0x2e342e83 -[NSInvocation invokeWithTarget:] + 51 
7 my app        0x0015f3bb -[UABaseAppDelegateSurrogate forwardInvocation:] (UABaseAppDelegateSurrogate.m:75) 

... 

回答

2

沒有符號文件我不認爲有一個自動的方式來做到這一點。

如果你知道ARM彙編程序,有源代碼,並有很多時間在你的手上,你可能通過反彙編你的程序並找出字節偏移對應的源代碼。我曾經做過這樣的分析,但在過去幾年裏還沒有深入到這一點。 (另外我從來沒有學過ARM彙編器)

通過代碼優化使問題變得更加困難。默認情況下,發佈版本設置會啓用高級別的代碼優化。編譯器對代碼進行重新排序,將源語句混合在一起,展開循環,將變量移入寄存器或簡化它們,還有很多其他技巧可以幫助您弄清楚所查看的內容非常棘手。

+0

謝謝。那也是我的想法。但我仍然提出這個問題,看看有沒有可能。 :( – Qiulang

+0

好吧我放棄了並接受了你的回答 – Qiulang

+0

@Qiulang,我的答案沒有被標記爲接受,它有幾個迴應票,但這不同於接受它,你應該接受一個答案,如果你覺得它回答你的問題,讓其他人知道它已經得到了回答(關於你是否應該接受我的回答的決定當然取決於你) –

相關問題