2011-08-17 96 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