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

时间:2016-02-09 18:25:50

标签: windows windbg

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

然后我编写了一个写入空指针的程序,以便导致崩溃。

崩溃后,会弹出一个窗口并显示" debug"或"节目关闭"选项。

所以我选择了" debug",得到了像我上传的图片一样的窗口。

Q值。难道不存在windbg选项吗? 问:我必须要错过一些东西。你能建议我用windbg进行故障排除吗?

enter image description here

1 个答案:

答案 0 :(得分:2)

正如Sean Cline在评论中所说,你可能没有将WinDbg设置为事后调试器。如果你有,WinDbg将启动而不是vsjitdebugger.exe

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

WinDbg was successfully installed as the default postmortem debugger.

编辑:请注意,在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

但如果您刚刚安装了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

/reg:64/reg:32分别需要获得" 64位注册表视图"以及" 32位注册表视图"无论是什么您是否正在运行%WINDIR%\System32\REG.EXE%WINDIR%\SysWOW64\REG.EXE。这显然只适用于64位Windows。)

关于你的问题:" 不应该选择windbg吗?"

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