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

然后,我编写了一个程序,该程序写入空指针,从而导致崩溃。

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

因此,我选择了“调试”,并获得了与上载图像类似的窗口。

问:是否应该有windbg选项?
问:一定有我想念的东西。您可以建议我使用windbg进行故障排除吗?

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

最佳答案

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

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

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

编辑:请注意,在64位Windows上,有针对64位应用程序和WOW64(32位)应用程序的事后调试器的单独设置。每种版本的WinDbg收到-I标志时,都会根据自己的位数设置为事后调试程序。也就是说,运行

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,无论是否运行%WINDIR%\System32\REG.EXE%WINDIR%\SysWOW64\REG.EXE,都分别需要ojit_code和ojit_code才能获得“64位注册表 View ”和“32位注册表 View ”。这显然仅适用于64位Windows。)

关于您的问题:“应该有选择权吗?”

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

关于windows - 为什么我的windbg不在调试器列表中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35299446/

10-13 05:20