3

我正在为一个闭源应用程序编写第 3 方插件。我遇到了 XCode 调试器的问题。

我想使用调试器来单步调试我正在编写的插件的代码。为此,我在代码中设置了断点,启动了宿主应用程序,然后将 XCode 调试器附加到宿主应用程序的进程。我的问题是,调试器不是在断点处停止,而是在程序的另一部分引发的异常处停止。(具体来说,这个Thread 2: EXC_ARITHMETIC (code=EXC_i386_DIV, subcode=0x0):)

这个异常经常被抛出,以至于它实际上使我无法单步执行我真正感兴趣的代码。

我无法捕捉和处理这个异常,因为我没有抛出它的应用程序部分的源代码。

在这种情况下,谁能建议我如何调试我的代码?有什么方法可以告诉 XCode 调试器简单地“忽略”这个特定的EXC_ARITHMETIC异常,而是只在我明确设置的断点处停止?

更新

@user1118321 建议使用断点窗格关闭异常断点。我尝试使用此处显示的设置来执行此操作。

在此处输入图像描述

我认为选择“评估后自动继续”可能会阻止调试器停止。它没有。

我也尝试cont在停止后向调试器发出。这似乎也不起作用。

在此处输入图像描述

谁能告诉我我应该在此处输入哪些设置以防止调试器因我的EXC_ARITHMETIC异常而停止?

4

2 回答 2

3

这是一个整数“除以零”错误异常。据我所知,它们不会作为 C++ 异常传播,这就是为什么你不能不打破它们的原因。

即使您的插件未加载,也会发生这种情况吗?如果没有,您的插件会以某种方式导致除以零。

于 2013-02-03T18:51:10.087 回答
0

我按照@user1118321 建议的链接进行操作。经过几个小时的挠头,我无法弄清楚如何关闭或处理整数除以零异常。如果有人有任何想法,我很乐意听到。

不过,我确实找到了一种解决方法,即使用 GDB 而不是 XCode。与 XCode 不同,GDB 似乎并没有停止,而是EXC_ARITHMETIC让我进入我的代码。所以,我暂时将切换到 GDB 进行调试。

编辑

就我而言,第二个(更好的)解决方法涉及暂停引发异常的线程。这也让我可以单步执行我的插件代码。

于 2013-02-04T12:02:36.377 回答