让VC ++可执行文件自动加载调试器

时间:2016-01-18 05:31:47

标签: visual-studio debugging visual-c++

我有一个程序正在运行,它会加载一个单独的程序来为它做一些工作。使用Process.Start()从第一个单独的程序运行,我需要它加载到Visual Studio调试器中以单步执行它。

不幸的是,虽然我可以在调试器会话中运行第一个程序,但它仍然会以#34;正确的"处理。我需要在调试器会话中打开第二个程序。通常情况下,我会在启动过程中将调试器附加到进程中,但在这种情况下,我需要在早期(在CInitDialog()函数中)断点,并且,就像我一样快,我在这种情况下,无法解决代码问题。

我在Stack Overflow上找到的解决方案说使用Debugger.Launch(),但这似乎是特定于C#。

我还想过尝试在代码中导致崩溃(例如使用空指针引用)来加载调试器,但我怀疑这意味着单步执行对我来说是不可用的。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

Visual C ++具有与C#Debugger.Launch()类似的功能,称为DebugBreak()。这实际上打破了应用程序,它会向您显示一个对话框,询问您如何处理它:

enter image description here

如果您在此时选择调试程序,它将询问您是要在新的Visual Studio会话还是现有会话中执行此操作。我倾向于已经解决方案已经打开,所以我可以有效地附加到那个 - 打开一个新实例只给你文件而不是整个解决方案。

所以你可以简单地在你想要破解的代码中插入那个调用,并允许第一个程序按照正常情况运行它。第二个程序将启动并中断您放置语句的位置,然后您可以单步执行调试器允许的所有其他奇妙的事情。