当我启动调试会话时,程序执行会在看似断点的行(黄色背景色)处停止。我必须按F5继续,程序正常进行。
我将其称为幻像断点,因为似乎没有设置断点,即使执行在循环内停止,我只需要按F5一次即可继续。
我尝试在幻像位置设置断点,并删除所有断点但无效。
我能找到的唯一其他类似问题是Java和MS-Access,解决方案是对应用程序进行反编译。
虽然在开发过程中这非常烦人,但我还是咬紧牙关,直到应用程序安装在Citrix服务器上,其中显示的是一个错误消息框,说明遇到了断点。
作为事后的想法,我刚刚重建了安装程序,在运行应用程序后,发出了严重错误。在调试模式下,消息是“myapp.exe已触发断点:”。我无法解释为什么它在Citrix服务器上完全有用。)
我肯定会对如何解决此问题提出任何建议。
TIA
答案 0 :(得分:5)
您正在运行其他人的代码,并且该代码具有编译到程序中的显式调试器中断指令。例如,您可以通过在托管程序中编写Debugger.Break()来实现此目的。它也可能存在于非托管代码中,__ decugbreak()内部函数或DebugBreak()winapi函数执行此操作。可能是一个简单的疏忽,可能是故意留在代码中来警告问题。
找到执行此操作的程序员的一种方法是使用调试器。 Project + Properties,Debug选项卡,勾选“启用非托管代码调试”选项。然后工具+选项,调试,常规,取消选中“启用我的代码”选项。
运行程序并重现条件。现在使用Debug + Windows + Call Stack并查看列表的最顶部。如有必要,请向上滚动。它可能会显示为灰色,表示这不是您的代码,它不会。你会在那里看到DLL的名称。打电话给编写该DLL的公司或程序员并征求意见。