在启动时无法再使用vsjitdebugger来调试进程

时间:2018-08-11 00:12:26

标签: windows debugging windows-10

当我在Windows 10之前的Windows版本中工作时,能够启动特定可执行文件时调用调试器。为此,我创建了以下批处理文件:

@echo off
 >%temp%\output.reg echo Windows Registry Editor Version 5.00
>>%temp%\output.reg echo+
>>%temp%\output.reg echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regsvr32.exe]
>>%temp%\output.reg echo "debugger"="vsjitdebugger.exe"
regedit /s %temp%\output.reg
del %temp\output.reg

为了阻止它,我用了:

@echo off
 >%temp%\output.reg echo Windows Registry Editor Version 5.00
>>%temp%\output.reg echo+
>>%temp%\output.reg echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\regsvr32.exe]
>>%temp%\output.reg echo "debugger"=-
regedit /s %temp%\output.reg
del %temp\output.reg

当然,这些文件专门用于regsvr32.exe。我还有其他可执行文件。

但是,在Windows 10下使用此技巧时,它无法工作。我会得到错误:

  

启动'regsvr32“ my.dll”'时发生错误:

     

未通知Visual Studio即时调试器应用程序正确启动。

     

有关“及时调试,错误”的信息,请查阅文档索引。

我不知道它指的是什么文档索引,但是我发现这是一个权限问题,因此我尝试将vsjitdebugger.exe文件上的设置更改为Run this program as an administrator,我得到一个不同的错误对话框,说:

  

C:\ WINDOWS \ system32 \ regsvr32.exe

     

请求的操作需要提升。

现在,如果要打开Administrator cmd窗口并使用以下命令:

vsjitdebugger.exe regsvr32  "my.dll"

这确实会在regsvr32.exe应用程序启动时调用调试器。但是,此技巧的目的是确保在任何东西执行应用程序时调用调试器,而这可能不在我控制的cmd进程下。

所以我有2个问题。

  1. 有人知道错误消息中引用的文档索引吗?
  2. 如何使它在Windows 10版本1709(操作系统内部版本16299.371)下工作?

1 个答案:

答案 0 :(得分:0)

我有同样的问题。不知道为什么,但是很明显,在Windows 10上有必要在注册表中进行配置,据我所记得,以前没有必要进行配置,或者在安装Visual Studio时会自动发生。

在注册表路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug中,添加一个值为“ 1”的类型为“ String”的名为“ Auto”的项。

编辑:此处在“疑难解答”中提到:https://docs.microsoft.com/en-us/visualstudio/debugger/debug-using-the-just-in-time-debugger#jit_errors