这就是我正在做的事情:
- 将 C++ 项目设置为启动项目
- 建造
- 设置多个断点
- 按 F5
正确的项目已启动,断点显示为有效且已加载(实心红色圆圈),Visual Studio 在标题栏中显示“正在运行”,调试工具栏已激活,但程序不会在断点处停止。
如果我使用附加到进程功能,选择“托管(v4.6,v4.5,v4.0)代码,本机代码”,程序会在断点处停止,我可以正确调试。
有人有任何解决或排除故障的技巧吗?
顺便说一句(我不知道这些问题是否相互关联),我的 F11(步入)键也不起作用,我尝试重置 Visual Studio 设置,但并没有解决问题。
[编辑] 如果我需要在准备好用户交互之前调试代码,我需要设置一些东西来阻止程序,直到我可以附加到该进程。
答案1
现在我希望了解您需要什么。
启动调试器并将其附加到进程。
你需要这个方法Debugger.Break 方法():
向附加的调试器发出断点信号。
因此,您可以在入口点之后直接在源代码中使用它,如下所示:
#if DEBUG
Debugger.Launch();
Debugger.Break();
MainForm.Show();
#else
// nothing to do
#endif
您的程序将在此时停止,然后您就可以调试了!
答案2
最后通过以下方式修复了它(我不知道这是否是最好的方法,但它对我有用)
进入Visual Studio调试选项(以下两种方式都会在选项对话框中打开相同的页面)
- 调试 > 选项
- 工具 > 选项 > 调试 > 常规
然后在此页面中务必禁用:
- 启用“仅我的代码”
然后确保启用
- 使用托管兼容模式
- 使用本机兼容模式
现在转到附加到进程对话框:
- 调试 > 附加到进程 > 附加到 > 选择
- 现在选择“托管(v4.6,v4.5,v4.0)代码”,“本机代码”和“托管兼容性代码”
然后对于要调试的每个项目:
- 右键单击 > 属性 > 调试 > 调试器类型
- 将值设置为:“混合”
现在按 F5 键,所有托管和非托管断点都应该处于活动状态!!!