定位程式crash的方法。

2021-06-14 04:33:21 字數 574 閱讀 8453

一、利用工具,比如crashfinder。先來測試一段簡單除0**出錯。

#include int crash(int x, int y)

int main()

當前**我用vs2008,release模式編譯一下。直接單獨執行一下exe,得到下面的錯誤。位置為 0x00401678。

二、我們把crashfinder放到release目錄下。如下圖所示。(注意,必須保證vs生成有.pdb檔案)

開啟crashfinder,選擇new,然後選exe進去,輸入401678,點find。結果如下圖所示。

程式準確顯示具體地方所呼叫的出錯函式。然後可以進一步仔細檢查。

定位crash問題

使用反彙編精確到一條彙編指令 addr2line可以精確到哪一行 但是一行 可能對應多條指令,所以如果條件允許的話,拿到帶有符號表的演算法庫,反彙編到具體指令。工作中出現乙個crash,首先定位到具體語句 mdevice getpixfmt framemsg mframe,framefmt 如果單看...

定位release的Crash位置

對於已經上線的應用,蘋果測試的應用,或者是release環境包導致的crash,我們就需要一些特殊的手段來通過crash log進行分析定位了。是工程名 1.匯出 crash 通過xcode的organizer檢視某台iphone裝置的devicelog,選擇需要的crash log,匯出 cras...

DSYM 檔案定位crash

重點是dwarfdump uuid命令 我們在ios開發中會碰到的很多crash問題,如果debug除錯模式的話,我們可以往往很容易的根據log的輸出定位到導致crash的原因,但對於已經上線的應用,或者是release環境包導致的crash,我們就需要一些特殊的手段來通過crash log進行分析...