2011-07-28 35 views
0

我立刻懷疑崩潰。一個浮點異常的方法,其唯一的算法是「除以sizeof(short)」。如何調試foobar程序計數器

我看着堆棧抓取&看到方法的偏移量是「+91」。然後我檢查了該方法的反彙編&,確認程序計數器實際上是在崩潰時的foobar。拆解顯示在+90和+93但不是+91的指示。

這是一種方法,32位x86指令,在應用程序的生命週期中被非常頻繁地調用。這個崩潰已經報道了3次。

這是怎麼發生的?我如何爲這種情況設置調試陷阱?

回答

0

通常,當你在指令中間發生故障時,由於錯誤的流量控制(即:跳轉,調用,retn),溢出,錯誤解引用或調試符號不同步,堆棧跟蹤顯示錯誤的信息。您的第一步是每次都可靠地重現錯誤,否則您將無法捕獲它,從那裏我只是在調試器中運行它,強制條件使其爆炸,然後檢查(調用)堆棧並註冊到看他們是否有效值等。