我正在为闭源应用程序编写第三方插件。我遇到了XCode调试器的问题。
我想使用调试器来逐步完成我正在编写的插件的代码。为此,我在代码中设置了一个断点,我已经启动了主机应用程序,然后我将XCode调试器附加到主机应用程序的进程中。我的问题是,调试器不是停在我的断点处,而是停止在程序的另一部分引发的异常。 (具体来说,这是:Thread 2: EXC_ARITHMETIC (code=EXC_i386_DIV, subcode=0x0)
)
这种异常经常被抛出,因此它实际上无法逐步完成我真正感兴趣的代码。
我无法捕获并处理此异常,因为我没有引发它的应用程序部分的源代码。
在这种情况下,有人可以建议我如何调试我的代码吗?有没有办法告诉XCode调试器简单地“忽略”这个特定的EXC_ARITHMETIC
异常,而是只停留在我明确设置的断点上?
更新
@ user1118321建议使用断点窗格关闭异常断点。我尝试使用此处显示的设置进行此操作。
我认为选择“评估后自动继续”可能会使调试器停止运行。它没有。
我也尝试在停止后向调试器发出cont
。这似乎也不起作用。
任何人都可以告诉我我应该在这里输入什么设置,以防止调试器在我的EXC_ARITHMETIC
例外停止?
答案 0 :(得分:3)
这是一个整数“除以零”错误异常。据我所知,它们不会作为C ++异常传播,这就是为什么你不能打破它们。
即使您的插件未加载,是否会发生这种情况?如果没有,你的插件会以某种方式导致除零。
答案 1 :(得分:0)
我按照@ user1118321建议的链接。经过几个小时的头部刮擦,我无法弄清楚如何关闭或处理整数除以零异常。如果有人有任何想法,我会很高兴听到他们。
我确实找到了一种解决方法,即使用GDB而不是XCode。与XCode不同,GDB似乎不会停留在EXC_ARITHMETIC
上,让我进入我的代码。因此,暂时我将切换到GDB进行调试。
修改的
在我的情况下,第二个(更好的)解决方法涉及暂停抛出异常的线程。这也让我可以逐步完成我的插件代码。