windbg首先连接,然后在内核debugging过程中卡住“Debuggee not connected。”消息

我正在尝试进行Windows内核debugging,所以我为此设置了两台机器:

  1. HOST – DEBUGGER – 运行windbgdebugging器的计算机
  2. TARGET – DEBUGEE – 被debugging的计算机

HOST和TARGET都运行Windows 7 32位并且都安装了Windows Driver Kit 8.0。 我做了以下步骤:

在目标我已经使用以下命令启用内核debugging:

bcdedit /copy {current} /d "Windows 7 wih debug" bcdedit /debug {02b760e4-eafc-11e4-8847-ac1155aec81a} on bcdedit /dbgsettings serial debugport:1 baudrate:115200 bcdedit /set {bootmgr} displaybootmenu yes bcdedit /timeout 10 

然后我开始了HOST,并做了以下步骤:

  1. 开始windbg
  2. 文件 – >内核debugging – > COM
  3. 波特率:115200,端口:COM1,pipe道:未选中,重新连接:未选中,复位:0

在这之后,我在HOST上的windbg命令窗口如下所示:

 Microsoft (R) Windows Debugger Version 6.2.9200.20512 X86 Copyright (c) Microsoft Corporation. All rights reserved. Opened \\.\COM1 Waiting to reconnect... 

然后,我重新启动了TARGET,并从启动菜单中select“带debugging的Windows 7”。

在这之后,我在HOST上的windbg命令窗口如下所示:

 Microsoft (R) Windows Debugger Version 6.2.9200.20512 X86 Copyright (c) Microsoft Corporation. All rights reserved. Opened \\.\COM1 Waiting to reconnect... Connected to Windows 7 7601 x86 compatible target at (Tue May 5 08:23:33.992 2015 (UTC - 7:00)), ptr64 FALSE Kernel Debugger connection established. Symbol search path is: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols Executable search path is: Windows 7 Kernel Version 7601 MP (1 procs) Free x86 compatible Built by: 7601.17514.x86fre.win7sp1_rtm.101119-1850 Machine Name: Kernel base = 0x82611000 PsLoadedModuleList = 0x8275b850 System Uptime: not available 

但是,而不是提示通常命令键入我得到: Debuggee not connected. TARGET系统像往常一样开始,我可以使用它。

几件我注意到的事情:

  1. 在上述步骤之后,在设备pipe理器中的目标机器上缺lessCOM1端口。
  2. closures主机上的windb并试图重新启动目标后,卡住了“Shutting Down”信息,所以我必须强制closures电源。
  3. 将TARGET启动到“旧”内核后,如果没有启用debuggingfunction,则串口在设备pipe理器中可用。
  4. 将启动TARGET设置为“新”内核并启用了debuggingfunction(并且没有主机侦听)后,设备pipe理器中的串行端口不可用。

我做错了什么?

PS:两台机器都是XEN上的虚拟客人。 PPS:连接是100%工作,在内核上进行testing,没有启用debugging和腻子

编辑:

标题已更改。

根据这篇文章我的内核debugging器不会连接 COM1丢失是可以的:

通过检查设备pipe理器,我能够确认在VM中运行的操作系统的configuration有问题。 bcdedit设置configuration为使用COM1,这应该使COM1不可用在操作系统中,但是,COM1出现在设备pipe理器中。 由于某些原因,debugging器在启动时未捕获COM1,因为它已configuration为。

我也检查了上述文章中描述的设置,但他们似乎也可以:

 C:\>bcdedit Windows Boot Manager -------------------- identifier {bootmgr} device partition=\Device\HarddiskVolume1 description Windows Boot Manager locale en-US inherit {globalsettings} default {default} resumeobject {02b760e0-eafc-11e4-8847-ac1155aec81a} displayorder {default} {current} toolsdisplayorder {memdiag} timeout 10 displaybootmenu Yes Windows Boot Loader ------------------- identifier {default} device partition=C: path \Windows\system32\winload.exe description Windows 7 locale en-US inherit {bootloadersettings} recoverysequence {02b760e2-eafc-11e4-8847-ac1155aec81a} recoveryenabled Yes osdevice partition=C: systemroot \Windows resumeobject {02b760e0-eafc-11e4-8847-ac1155aec81a} nx OptIn Windows Boot Loader ------------------- identifier {current} device partition=C: path \Windows\system32\winload.exe description Windows 7 wih debug locale en-US inherit {bootloadersettings} recoverysequence {02b760e2-eafc-11e4-8847-ac1155aec81a} recoveryenabled Yes osdevice partition=C: systemroot \Windows resumeobject {02b760e0-eafc-11e4-8847-ac1155aec81a} nx OptIn debug Yes 

EDIT2

基于这个答案,我试过问题kd -kl命令。 我想它应该只发布在目标上,但要确定我已经尝试了两台机器。 你可以看到有关符号的错误,但我认为debugging也应该没有他们的工作。

主办:

 c:\Program Files\Windows Kits\8.0\Debuggers\x86>kd -kl Microsoft (R) Windows Debugger Version 6.2.9200.20512 X86 Copyright (c) Microsoft Corporation. All rights reserved. The system does not support local kernel debugging. Local kernel debugging requires Windows XP, Administrative privileges. Only a single local kernel debugging session can run at a time. Local kernel debugging is disabled by default since Windows Vista, you must run "bcdedit -debug on" and reboot to enable it. Debuggee initialization failed, HRESULT 0x80004001 "Not implemented" 

目标:

 c:\Program Files\Windows Kits\8.0\Debuggers\x86>kd -kl Microsoft (R) Windows Debugger Version 6.2.9200.20512 X86 Copyright (c) Microsoft Corporation. All rights reserved. Connected to Windows 7 7601 x86 compatible target at (Tue May 5 12:13:02.806 20 15 (UTC - 7:00)), ptr64 FALSE Symbol search path is: *** Invalid *** **************************************************************************** * Symbol loading may be unreliable without a symbol search path. * * Use .symfix to have the debugger choose a symbol path. * * After setting your symbol path, use .reload to refresh symbol locations. * **************************************************************************** Executable search path is: ********************************************************************* * Symbols can not be loaded because symbol path is not initialized. * * * * The Symbol Path can be set by: * * using the _NT_SYMBOL_PATH environment variable. * * using the -y <symbol_path> argument when starting the debugger. * * using .sympath and .sympath+ * ********************************************************************* *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkr pamp.exe - Windows 7 Kernel Version 7601 (Service Pack 1) MP (1 procs) Free x86 compatible Product: WinNt, suite: TerminalServer SingleUserTS Built by: 7601.17514.x86fre.win7sp1_rtm.101119-1850 Machine Name: Kernel base = 0x82653000 PsLoadedModuleList = 0x8279d850 Debug session time: Tue May 5 12:13:02.822 2015 (UTC - 7:00) System Uptime: 0 days 2:48:38.649 lkd> 

还有一些关于设置打印机共享的build议,他们值得尝试吗?

Solutions Collecting From Web of "windbg首先连接,然后在内核debugging过程中卡住“Debuggee not connected。”消息"

它看起来像你有调试器附加到目标。 (1)忽略WinDbg状态消息。 查看你是否连接到目标的最好方法是尝试一些命令。 (2)当我调试一个虚拟机时,我正在使用的串口也不见了,但看起来好像你已经搞清楚了(做得好)。

为了发出命令,你需要打入内核。 点击“Debug-> Break”并尝试下面的命令:

 .reload !ustr srv!SrvComputerName 

这应该给你的目标系统计算机名称。

如果你想了解更多关于内核调试的知识,我会查看YouTube上的TheSourceLens 。 至于文献,我不能推荐任何书籍,因为我发现的大多数信息都是在线的。 不过,我建议检查OSR在线 。 快乐调试。

您可以尝试Bellavista.exe创建一个新的调试条目并查找差异。