【问题标题】:WinDbg c-level debugging?WinDbg c级调试?
【发布时间】:2011-08-30 15:14:08
【问题描述】:

刚开始步进我的内核模式 USB 驱动程序,它在汇编程序中。如何将 WinDbg 配置为 c 级调试?这就是我现在的样子=/

MyDriver!MyDriver_EvtDeviceAdd+0xb:
af20801b 833d647020af03  cmp     dword ptr [MyDriver!DebugLevel (af207064)],3
0: kd> p
MyDriver!MyDriver_EvtDeviceAdd+0x2e:
af20803e ff15006020af    call    dword ptr [MyDriver!_imp__KeGetCurrentIrql (af206000)]
0: kd> p
MyDriver!MyDriver_EvtDeviceAdd+0x58:
af208068 8d95a8feffff    lea     edx,[ebp-158h]
0: kd> p
MyDriver!MyDriver_EvtDeviceAdd+0x64:
af208074 c785bcfeffff508420af mov dword ptr [ebp-144h],offset MyDriver!MyDriver_EvtDevicePrepareHardware (af208450)

【问题讨论】:

    标签: c windbg


    【解决方案1】:

    WinDbg 找不到 pdb 文件。正确填写所有 WinDbg 路径:

    1. 符号搜索路径 - 必须包含驱动程序 .pdb 文件和 MS 调试符号的本地路径。

    2. 源搜索路径 - 必须包括带有驱动程序源文件的目录。

    3. 图像文件路径 - 必须包含驱动程序 .sys 文件。

    查看 WinDbg 日志:它报告所有尝试加载调试信息的错误。如果您看到类似“无法为 your_driver.sys 加载调试信息”的信息,则说明有问题。

    【讨论】:

    • 我很确定 1. 和 2. 没问题。但我必须看更接近 3. 明天。我正在通过 Firewire 连接到我的开发人员计算机的目标计算机上运行驱动程序。在目标计算机上,我只有 .sys 文件(以及用于安装的 inf 和一些 WDK KMDF 共同安装程序 dll)。开发者电脑有完整的源代码,生成的符号等...)这是正确的方法吗?
    • @user872661 - 目标计算机必须仅包含运行时:.sys、.inf。调试器计算机必须包含 .pdb、符号、源代码和可执行文件。加载驱动程序时,打开其源文件之一并尝试设置断点。 WindDbg 询问您是否加载调试符号。选择“是”。这是加载调试符号时的位置,查看 WinDbg 日志 - 它会打印所有加载的驱动程序。
    • 好的,因为我可以在断点处中断,所以我猜符号文件没问题。步进时仍然只有汇编代码=/
    【解决方案2】:

    根据上面的输出,您的符号看起来不错。如果您没有弹出源窗口,您通常处于以下两种情况之一:

    1) 您已将源代码从最初构建的位置移走。默认情况下,PDB 具有指向原始源代码位置的完全限定路径。如果移动它,WinDBG 将无法找到它。您可以通过以下方式查看 WinDBG 正在寻找的位置:

    u MyDriver!MyDriver_EvtDeviceAdd

    这应该会为您提供包含嵌入在 PDB 中的函数的源模块的完整路径。您可以通过将源搜索路径设置为指向新位置来覆盖此路径。

    2) 您设法以某种方式隐藏了源窗口。看起来很傻,但我的学生总是会这样:) 检查 WinDBG 中的“窗口”菜单项,看看窗口是否在某个地方打开。

    为了澄清前面的观点,您确实不需要在这种情况下需要设置您的图像文件路径。唯一需要的时间是调试小型转储。

    -斯科特

    【讨论】:

      【解决方案3】:

      您需要确保为您的驱动程序生成“Codeview”/调试符号,并且 Windbg 可以访问生成的文件。

      【讨论】:

      • 我正在使用 WDK 自己的编译器和链接器,用于 Windows Vista x86 "checked-build" "build -ceZ",我应该添加任何额外内容。我的 Windows Vista 是“免费构建”的,这是个问题吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多