3

当我开始调试会话时,程序执行在似乎是断点的行处停止(黄色背景色)。我必须按 F5 才能继续,程序正常进行。

我称它为幻象断点,因为似乎没有设置断点,即使执行在循环内停止,我只需要按一次 F5 即可继续。

我尝试在幻像位置设置断点,并删除所有断点但无济于事。

我能找到的唯一其他类似问题是 Java 和 MS-Access,解决方案是反编译应用程序。

尽管在开发过程中这很烦人,但我一直咬紧牙关,直到应用程序安装在 Citrix 服务器上,其中显示一个错误消息框,说明遇到了断点。

作为事后的想法,我刚刚重建了安装程序,运行应用程序后,发出了一个严重错误。在调试模式下,消息是“myapp.exe 已触发断点:”。我无法解释为什么它在 Citrix 服务器上完全有效)。

我当然会很感激有关如何解决此问题的任何建议。

TIA

4

1 回答 1

5

您正在运行其他人的代码,并且该代码具有编译到程序中的显式调试器中断指令。例如,您可以通过在托管程序中编写 Debugger.Break() 来做到这一点。它也可能存在于非托管代码中,__debugbreak() 内部函数或 DebugBreak() winapi 函数执行此操作。可能是一个简单的疏忽,也可能是故意将其留在代码中以警告问题。

找到执行此操作的程序员的一种方法是使用调试器。项目+属性,调试选项卡,勾选“启用非托管代码调试”选项。然后工具+选项,调试,常规,取消勾选“仅启用我的代码”选项。

运行程序并重现条件。现在使用 Debug + Windows + Call Stack 并查看列表的最顶部。如有必要,向上滚动。它很可能是灰色的,表明这不是你的代码,它不会是。您将在此处看到 DLL 的名称。致电编写该 DLL 的公司或程序员并寻求建议。

于 2013-06-04T02:57:15.773 回答