【发布时间】:2013-12-02 21:08:44
【问题描述】:
当满足某些条件时,我需要从我的本机 C++ 程序启动调试器。在 C# 中,我只调用 System.Diagnostics.Debugger.Launch()。我认为 Win32 DebugBreak() 调用会做我想做的事,但如果没有调试器,它只会终止应用程序。
如何从本机代码启动调试器的新实例(著名的“可能的调试器”对话框)?甚至可能吗?我可以尝试使用 COM 来创建一个新的 Visual Studio 实例,但它有点复杂,而且还会将我锁定到特定版本的 VS。
【问题讨论】:
-
我也遇到了同样的问题,也没有找到解决办法。我终于解决了我的问题,方法是将 System.Diagnostics.Debugger.Launch 调用放在混合模式 DLL 中,将该函数导出为非托管函数,然后使用 LoadLibrary 从我的非托管应用程序中显式加载库。
-
这很酷,但当您的应用程序托管 CLR 时就不行了。加载托管库有点搞砸了整个托管的事情