【问题标题】:__debugbreak statement not triggering breakpoint__debugbreak 语句不触发断点
【发布时间】:2011-07-29 12:23:30
【问题描述】:
在我的可视化 C++ 代码中,我引入了用于触发断点的 __debugbreak 语句。我已经使用 /CLR 选项编译了项目。但它不会在执行过程中触发断点。为什么会这样?在我开枪之前请帮忙。这在 64 位可执行文件中。
编辑:我现在尝试使用 DebugBreak() 语句,现在它永远挂起,不确定是哪个语句。该 dll 由服务器程序使用,我从另一台机器上的客户端访问该程序。这是导致问题的原因吗?我应该从服务器机器本身运行它吗?我希望它至少会报告有关触发断点的消息,即使它无法在客户端计算机上成功启动调试器会话。 .pdb 文件在服务器上与 dll 相同的位置可用。
更新:我刚刚尝试在服务器机器上运行客户端程序,但 DebugBreak() 仍然导致无限挂起。调试器会话未启动。
【问题讨论】:
标签:
debugging
visual-c++
debugbreak
【解决方案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
【解决方案2】:
为什么不能在调试器中使用 F9(断点)?
但是,DebugBreak(); 应该可以工作。
如果 DLL/EXE 不能直接加载,您可以从“调试”菜单中“附加到进程”(希望您使用的是 Visual Studio)。