2011-08-17 68 views
1

我在XCode 4中設置了一個異常斷點。它是否會因爲在Cocoa Touch框架內產生並由框架處理的異常而中斷? I.E.調試器是否會停止所有異常,即使它們是框架的自然部分並由它在內部處理?XCode 4中異常斷點的幫助

我的調試器一直停留在框架內部,看似無害的異常,我需要知道我是否可以放心地忽略它。

回答

2

異常斷點就是這樣:異常斷點。這包括框架內的那些。它的例外情況無關緊要 - 如果它被提出,它應該中斷。

+0

如此做框架,使用異常處理?框架會在哪裏使用try/catch/finally?框架內的例外必然會產生問題,或者其中一些是基礎流程的一部分? – Undistraction 2011-08-17 22:05:37

3

如果你像我一樣,有次你想忽略特定的異常(如蘋果的間歇車CMMThrowExceptionOnError,蘋果公司疏於提供任何反饋對我的錯誤報告數月)

所以,我不可─非常高效的解決方案是增加而不是下面的斷點「添加C++異常斷點......」

從gdb的命令行中輸入 突破__cxa_throw

然後,在Xcode斷點編輯器,添加下列「調試器命令'到這個斷點。通過替換$ eip的違規地址,您可以從您的斷點中排除單個的 異常。

silent 
# go up one stack frame silently 
up-silently 
# in my particular app, address of CMMThrowExceptionOnError is 0x9704d22e 
if ($eip == 0x9704d22e) 
    # echo gdb ignore exception\n 
    #print $eip 
    cont 
end 

如果你能想出一個更好的解決方案,它不會招致調試腳本的開銷,請讓我知道。

0

只需在Xcode 4.3中通過defat使用LLDB的簡短說明 命令的語法不同。

set $eip = xxxx 

現在

reg write tip 0x006373ec 

命令的完整地圖,請在http://lldb.llvm.org/lldb-gdb.html