Visual Studio - 如何将调试器附加到重新启动的应用程序?

5
我有一个在VS2010中开发的C++应用程序。该应用程序具有在需要时重新启动自身的功能(某些更改需要重启)。现在,在重新启动后新实例的开始阶段,只在特定情况下出现了一些错误。问题是我无法找出是什么问题,因为新实例没有调试器附加(VS调试模式以初始实例关闭结束)。有什么办法可以自动将调试器附加到新实例上吗?
谢谢

你觉得在重启启动时使用DebugBreak(),然后重新连接调试器,是可能的吗?自动化这个过程将会很棘手(如果可能的话,我也想知道是否可以实现)。 - WhozCraig
BebugBreak()?从未听说过,好的谢谢,我会尝试并告诉你。 - Aros
1个回答

7
我“发现”了这是如何做到的,之前我的电脑感染了一些恶意软件,使用相同的技术来包装所有调用防病毒产品的操作,将其重定向到其自己的可执行文件!总结这里描述的步骤,它只涉及一些注册表编辑。顺便说一句,像DebugDiag这样的工具也曾经使用这种方法来捕获应用程序启动并激活调试器:要设置应用程序自动启动调试器。
  1. 打开注册表编辑器(regedit)。

  2. 在注册表编辑器中,打开 HKEY_LOCAL_MACHINE 文件夹。

  3. 导航到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\image file execution options

  4. Image File Execution Options 文件夹中,找到要调试的应用程序的名称,例如 myapp.exe。如果找不到要调试的应用程序:

    a. 右键单击 Image File Execution Options 文件夹,在快捷菜单上单击 New Key
    b. 右键单击新键,在快捷菜单上单击 Rename
    c. 将键名更改为您的应用程序名称;例如,在此示例中为 myapp.exe

  5. 右键单击 myapp.exe 文件夹,在快捷菜单上单击 New String Value

  6. 右键单击新字符串值,在快捷菜单上单击 Rename

  7. 将名称更改为 debugger

  8. 右键单击新字符串值,在快捷菜单上单击 Modify

    将显示 Edit String 对话框。

  9. Value data 框中,键入 vsjitdebugger.exe

  10. 单击 OK

  11. Registry 菜单中,单击 Exit

  12. 包含 vsjitdebugger.exe 的目录必须在系统路径中。请参阅上面的链接获取完整说明。

现在,使用任何方法启动您的应用程序。Visual Studio 将启动并在调试器中加载应用程序。

1
好的,我需要一些时间来阅读它。非常感谢。 - Aros
没问题,但别忘了在完成后删除注册表项,因为它会在你忘记之后长时间记住。;-) - Roger Rowland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接