我試圖調試一個用C寫的DLL中的問題,這個問題一直導致訪問衝突。我使用的是Visual C++ 2008,但代碼是筆直的。我使用Delphi,如果在調試器下運行時發生異常,程序會立即中斷調試器,它會給你一個檢查程序狀態的機會。但是,在Visual C++中,我所得到的只是「輸出」選項卡中的一條消息:如何讓VC++的調試程序中斷異常?
First-chance exception at blah blah blah: Access violation reading location 0x04410000.
沒有休息,什麼都沒有。它只是放開堆棧,直到它返回到我的Delphi EXE中,它識別出錯誤並在那裏提醒我,但是到那時我已經失去了幾層調用堆棧,我不知道發生了什麼。我試過其他的調試技術,但無論它做什麼都發生在C宏的嵌套循環內部,它被調用超過500次,這只是超出了我的技能(或我的耐心),而不是追蹤。
我覺得必須有某種方法來獲得「一次機會」的例外,才能真正給我一個「機會」來處理它。可能有一些「一次偶然異常」立即中斷「配置設置,我不知道,但它似乎並不是所有可以發現的。
有誰知道它在哪裏以及如何啓用它?
謝謝。這工作。我想知道爲什麼Access Violation沒有被默認選中... – 2010-04-14 21:20:07
@Mason:沒問題。我不認爲他們中的任何一個默認都被選中。我的猜測是,當「打破例外」被啓用時(雖然我不知道),會有相當顯着的性能損失。 – 2010-04-14 21:21:44
我不這麼認爲。我不太瞭解C++,但在Delphi中,性能損失爲零,直到它實際上打破了一個,當它(如果)它確實是這樣,那通常意味着出了問題,調試器正是你想要的地方是。 – 2010-04-14 21:23:37