Windows 为什么我的windbg不在调试器列表中?

Windows 为什么我的windbg不在调试器列表中?,windows,windbg,Windows,Windbg,我已在命令提示符下以管理员权限将windbg安装为默认调试器 然后,我编写了一个程序,它以空指针进行写入,从而导致崩溃 崩溃后,会弹出一个窗口,显示“调试”或“程序关闭”选项 所以我选择了“调试”,并得到了与我上传的图像类似的窗口 问:是否应该有windbg作为选项? 一定有什么我错过了。你能建议我用windbg进行故障排除吗 正如肖恩·克莱恩(Sean Cline)在评论中所建议的那样,您可能还没有将WinDbg设置为验尸调试器。如果有,WinDbg将启动,而不是vsjitdebugger.e

我已在命令提示符下以管理员权限将windbg安装为默认调试器

然后,我编写了一个程序,它以空指针进行写入,从而导致崩溃

崩溃后,会弹出一个窗口,显示“调试”或“程序关闭”选项

所以我选择了“调试”,并得到了与我上传的图像类似的窗口

问:是否应该有windbg作为选项? 一定有什么我错过了。你能建议我用windbg进行故障排除吗


正如肖恩·克莱恩(Sean Cline)在评论中所建议的那样,您可能还没有将WinDbg设置为验尸调试器。如果有,WinDbg将启动,而不是
vsjitdebugger.exe

确保确实从提升的命令提示符运行了
windbg.exe-I
。您是否这样做并收到以下消息框

编辑:请注意,在64位Windows上,64位应用程序和WOW64(32位)应用程序的事后调试程序有单独的设置。当接收到
-I
标志时,WinDbg的每个版本都将自身设置为其自身比特数的事后调试器。就是跑

C:\WINDOWS\system32>"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe" -I
..\x64\windbg.exe
设置为64位应用程序的事后调试器,但将
vsjitdebugger.exe
保留为WOW64应用程序的事后调试器

您可以使用
REG QUERY
命令检查当前配置。如果运行
windbg.exe-I
,您的输出应该是这样的:

C:\Users\conio>reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug" /reg:64

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
    UserDebuggerHotKey    REG_DWORD    0x0
    Debugger    REG_SZ    "C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe" -p %ld -e %ld -g
    Auto    REG_SZ    1
C:\Users\conio>reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug" /reg:32

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
    UserDebuggerHotKey    REG_DWORD    0x0
    Debugger    REG_SZ    "C:\WINDOWS\system32\vsjitdebugger.exe" -p %ld -e %ld
但如果您只是安装了Visual Studio(并且没有运行
windbg.exe-I
),则可能会出现类似的情况:

(无论您运行的是
%WINDIR%\System32\reg.EXE
还是
%WINDIR%\SysWOW64\reg.EXE
,都需要
/reg:64
/reg:32
分别获取“64位注册表视图”和“32位注册表视图”。这显然只适用于64位窗口。)

关于您的问题:“难道不应该有windbg作为选项吗?”


不,看标题。上面写着“Visual Studio即时调试器”。在系统上安装的不同调试器中进行选择并不是通用工具。它只运行VisualStudio,但可以选择是启动新实例还是使用现有实例(如果安装了多个版本,我认为它允许您选择VS版本)

您需要将windbg注册为。这可以通过使用
-I
开关命令行开关运行
windbg.exe
来完成。您需要记录64位和32位注册表项的重要性,这可能是重复的。Wow6432Node中的32位键最有可能是相关的。最好使用Regedit.exe,reg命令帮助不大。关于64位和WOW64应用程序的单独调试器问题,您是对的,但reg命令支持针对注册表的“32位视图”(即
KEY\u WOW64\u 32KEY
)我不建议使用
REG
命令设置
AeDebug
值,而只是查看它。使用
windbg.exe-I
设置可设置正确的键。但我会补充一些信息,尽管你可以这么做。这是一个很好的观点和一个很好的编辑。我会批准的