为什么我的 windbg 不在调试器列表中?
Why is my windbg not in debugger list?
我已经在具有管理员权限的命令提示符下将我的 windbg 安装为默认调试器。
然后我写了一个写空指针的程序导致崩溃
崩溃后,弹出 window 并显示 "debug" 或 "program close" 选项。
所以我选择了"debug",得到了和我上传的图片一样的window
问。不应该有 windbg 选项吗?
问:一定有什么我错过了。你能建议我使用 windbg 进行故障排除吗?
正如 Sean Cline 在他的评论中建议的那样,您可能还没有 将 WinDbg 设置为 post-mortem 调试器。如果有,WinDbg 将启动而不是 vsjitdebugger.exe
。
确保您真的 运行 windbg.exe -I
来自提升的命令提示符。您是否这样做并收到以下消息框?
编辑: 请注意,在 64 位 Windows 上,post-mortem 64 位应用程序调试器和 WOW64 (32位)的应用程序。每个版本的 WinDbg 在收到 -I
标志时都将自己设置为 post-mortem 调试器 用于其自己的位数 。即运行宁
C:\WINDOWS\system32>"C:\Program Files (x86)\Windows Kits\Debuggers\x64\windbg.exe" -I
将 ...\x64\windbg.exe
设置为 64 位应用程序的 post-mortem 调试器,但将 vsjitdebugger.exe
保留为 WOW64 应用程序的 post-mortem 调试器。
您可以使用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\Debuggers\x64\windbg.exe" -p %ld -e %ld -g
Auto REG_SZ 1
但是如果你刚刚安装了 Visual Studio(而不是 运行 windbg.exe -I
),它可能会是这样的:
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
(无论您是否 运行ning %WINDIR%\System32\REG.EXE
或 %WINDIR%\SysWOW64\REG.EXE
。这显然只适用于 64 位 Windows。)
关于您的问题:“不应该有 windbg 选项吗?”
没有。看标题。它说“Visual Studio Just-In-Time Debugger”。在您系统上安装的不同调试器之间进行选择并不是一个通用的实用程序。它只是 运行s Visual Studio,但可以选择是启动新实例还是使用现有实例(我认为如果安装了多个版本,它可以让你选择 VS 版本)。
我已经在具有管理员权限的命令提示符下将我的 windbg 安装为默认调试器。
然后我写了一个写空指针的程序导致崩溃
崩溃后,弹出 window 并显示 "debug" 或 "program close" 选项。
所以我选择了"debug",得到了和我上传的图片一样的window
问。不应该有 windbg 选项吗? 问:一定有什么我错过了。你能建议我使用 windbg 进行故障排除吗?
正如 Sean Cline 在他的评论中建议的那样,您可能还没有 将 WinDbg 设置为 post-mortem 调试器。如果有,WinDbg 将启动而不是 vsjitdebugger.exe
。
确保您真的 运行 windbg.exe -I
来自提升的命令提示符。您是否这样做并收到以下消息框?
编辑: 请注意,在 64 位 Windows 上,post-mortem 64 位应用程序调试器和 WOW64 (32位)的应用程序。每个版本的 WinDbg 在收到 -I
标志时都将自己设置为 post-mortem 调试器 用于其自己的位数 。即运行宁
C:\WINDOWS\system32>"C:\Program Files (x86)\Windows Kits\Debuggers\x64\windbg.exe" -I
将 ...\x64\windbg.exe
设置为 64 位应用程序的 post-mortem 调试器,但将 vsjitdebugger.exe
保留为 WOW64 应用程序的 post-mortem 调试器。
您可以使用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\Debuggers\x64\windbg.exe" -p %ld -e %ld -g
Auto REG_SZ 1
但是如果你刚刚安装了 Visual Studio(而不是 运行 windbg.exe -I
),它可能会是这样的:
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
(无论您是否 运行ning %WINDIR%\System32\REG.EXE
或 %WINDIR%\SysWOW64\REG.EXE
。这显然只适用于 64 位 Windows。)
关于您的问题:“不应该有 windbg 选项吗?”
没有。看标题。它说“Visual Studio Just-In-Time Debugger”。在您系统上安装的不同调试器之间进行选择并不是一个通用的实用程序。它只是 运行s Visual Studio,但可以选择是启动新实例还是使用现有实例(我认为如果安装了多个版本,它可以让你选择 VS 版本)。