zoukankan      html  css  js  c++  java
  • 我的内核调试器无法连接

    在windbg中,可以使用Ctrl+Alt+D查看调试器的内部信息流。在KD中,使用Ctrl+D和ENTER来切换输出。启用这个输出,我可以看到调试器无法从调试端口读取数据,而且它正在超时。错误“SYNCTARGET:Timeout.”清楚地表明调试主机无法与调试目标通信,尤其是在“Send Break-in”消息之后出现此错误时。

    因为我在Hyper-V虚拟机上使用命名管道,所以我知道我没有坏电缆,尽管这是导致内核调试失败的常见原因。我还知道虚拟机的配置是正确的,我可以将调试器用于这台服务器上的其他虚拟机。问题很可能是在虚拟机中运行的操作系统。
    通过检查设备管理器,我能够确认在虚拟机中运行的操作系统的配置有问题。bcdedit设置被配置为使用COM1,这将使COM1在操作系统中不可用,但是,COM1出现在设备管理器中。由于某些原因,调试器在启动时没有像配置的那样捕获COM1。

    检查此服务器的bcd配置时,我发现bcd配置不正确。在普通Windows 7或Windows Server 2008 R2操作系统的bcd存储中,bcdedit的Windows引导加载程序部分具有继承设置。您可以使用命令“bcdedit/enum all”从提升的命令提示符查看系统上的此信息。通常,Windows引导加载程序继承{bootloadersettings},{bootloadersettings}继承{globalsettings},{globalsettings}继承{dbgsettings}。如果没有继承设置,则引导加载程序将无法读取调试器配置。
    下面是损坏的虚拟机的bcd设置。您可以看到所有正常继承的设置都丢失了。

    C:Windowssystem32>bcdedit /enum all
    
     
    
    Windows Boot Manager
    
    --------------------
    
    identifier              {bootmgr}
    
    device                  partition=C:
    
    path                    ootmgr
    
    description             Windows Boot Manager
    
    locale                  en-US
    
    default                 {current}
    
    displayorder            {current}
    
    timeout                 30
    
     
    
    Windows Boot Loader
    
    -------------------
    
    identifier              {current}
    
    device                  partition=C:
    
    path                    Windowssystem32winload.exe
    
    description             Windows Server 2008 R2 Standard (recovered)
    
    locale                  en-US
    
    osdevice                partition=C:
    
    systemroot              Windows
    
    resumeobject            {2ec5363f-2a92-11e1-bbe4-806e6f6e6963}
    
    usefirmwarepcisettings  No
    
    debug                   Yes
    
     
    
    Resume from Hibernate
    
    ---------------------
    
    identifier              {2ec5363f-2a92-11e1-bbe4-806e6f6e6963}
    
    device                  partition=C:
    
    path                    Windowssystem32winresume.exe
    
    description             Windows Server 2008 R2 Standard (recovered)
    
    locale                  en-US
    
    inherit                 {resumeloadersettings}
    
    filedevice              partition=C:
    
    filepath                hiberfil.sys
    
    debugoptionenabled      Yes
    
     
    
    Windows Memory Tester
    
    ---------------------
    
    identifier              {memdiag}
    
    device                  partition=C:
    
    path                    ootmemtest.exe
    
    description             Windows Memory Diagnostic
    
    locale                  en-US
    
     
    
    Debugger Settings
    
    -----------------
    
    identifier              {dbgsettings}
    
    debugtype               Serial
    
    debugport               1
    
    baudrate                115200

    因为我对这个虚拟机的唯一兴趣是让调试器工作,所以我没有将所有丢失的设置添加到bcd存储中。我可以使用以下命令强制在引导时读取调试器配置:
    bcdedit/set inherit{dbgsettings}
    我希望这有助于下次您尝试配置调试器但它不起作用。请记住,我们不仅需要打开并配置调试器,还需要继承设置。

  • 相关阅读:
    771. Jewels and Stones
    706. Design HashMap
    811. Subdomain Visit Count
    733. Flood Fill
    117. Populating Next Right Pointers in Each Node II
    250. Count Univalue Subtrees
    94. Binary Tree Inorder Traversal
    116. Populating Next Right Pointers in Each Node
    285. Inorder Successor in BST
    292. Nim Game Java Solutin
  • 原文地址:https://www.cnblogs.com/yilang/p/13696132.html
Copyright © 2011-2022 走看看