__debugbreak语句不会触发断点

时间:2011-07-29 12:23:30

标签: debugging visual-c++ debugbreak

在我的visual C ++代码中,我引入了一个__debugbreak语句来触发断点。我用/ CLR选项编译了项目。但它不会在执行期间触发断点。为什么会这样?在我开枪之前请帮忙。这是64位可执行文件。

编辑:我现在尝试使用DebugBreak()语句,它现在永远挂起,不确定在哪个语句。 dll由服务器程序使用,我从另一台机器上的客户端访问该程序。这是导致问题的原因吗?我应该从服务器机器本身运行吗?我期望它至少报告一个关于断点被触发的消息,即使它无法在客户端机器上成功启动调试器会话。 .pdb文件在服务器上与dll位于同一位置。

更新:我刚试过在服务器机器上运行客户端程序,但是DebugBreak()仍会导致无限挂起。调试器会话未启动。

2 个答案:

答案 0 :(得分:1)

我在C#中使用此代码,也许您可​​以将其用于C ++

#if DEBUG
var endTime = DateTime.Now.AddSeconds(30);
while (!System.Diagnostics.Debugger.IsAttached && DateTime.Now < endTime)
  System.Threading.Thread.Sleep(10);

if (System.Diagnostics.Debugger.IsAttached)
{
  System.Diagnostics.Debugger.Break();
}
#endif

答案 1 :(得分:0)

为什么不能在调试器中使用F9(断点)? 但DebugBreak();应该可以正常工作。

如果无法直接加载DLL / EXE,您可以从“调试”菜单中“附加到进程”(希望您使用的是Visual Studio)。