使用WinDbg内核调试

简介: <ol><li>首先你要配置好测试环境:参考<a target="_blank" href="http://www.leyond.info/2010/06/04/vmware-windgb-win7-kernel-debug/">VMware+Windgb+Win7 内核驱动调试</a></li><li>在你的主机上配置Symbols <ul><li>配置sympath,C:\U
  1. 首先你要配置好测试环境:参考VMware+Windgb+Win7 内核驱动调试
  2. 在你的主机上配置Symbols
    • 配置sympath,C:\Users\Admin\Desktop\first\objchk_win7_x86\i386是你编译好的sys目录: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;C:\Users\Admin\Desktop\first\objchk_win7_x86\i386
    • 配置Source search path假设文件放在C:\Users\Admin\Desktop\first]: C:\Users\Admin\Desktop\first
    • 然后在命令行中输入:.reload
    • 打开源文件:Ctrl+O
  3. 接着检查是否已经加载sys.dbg,命令为:

    kd> !lmi ndislwf
    Loaded Module Info: [nt]
    Module: ntoskrnl     Base Address: 80a02000

    Symbol Type: PDB      – Symbols loaded successfully from symbol server.
    d:\DebugSymbols\ndislwf.pdb\EC9B7590D1BB47A6A6D5383538C2B31A1\ntoskrnl.pdb
    Compiler: C – front end [13.10 bld 2179] – back end [13.10 bld 2190]      Load Report: public symbols
    d:\DebugSymbols\ndislwf.pdb\EC9B7590D1BB47A6A6D5383538C2B31A1\ndislwf.pdb

  4. 接着如果出现如上的结果,表明可以手动设置断点,否则(个人经验总是不能设置)。假设在ndislwf 的DriverEntry 设置断点。在启动驱动之前,中断在WinDbg的命令窗口,输入:bu ndislwf!DriverEntry
  5. 接下来开始安装测试驱动。若执行到DriverEntry该函数,就会停下来,并且会在代码框中对应的代码中用红色标志,然后按F10可以单步调试。
  6. 如果查看已经设置哪些断点:

    kd> bl

    0 e [d:\winddk\3790\src\general\ioctl\sys\filter.c @ 123]    0001 (0001) ndislwf!DriverEntry

    1 e [d:\winddk\3790\src\general\ioctl\sys\filter.c @ 338]    0001 (0001) ndislwf!SioctlDeviceControl+0×103

    注意两件事: 每个断点都有一个号码并且显示出断点状态,“e”是“enabled”,而“d”是“disabled”。假设你希望临时停止使用某个断点。bd (“Disable Breakpoint”) 将会完成它。你只需指定断点号码:

    kd> bd 1

    kd> bl

    0 e [d:\winddk\3790\src\general\ioctl\sys\filter.c @ 123]    0001 (0001) ndislwf!DriverEntry

    1 d [d:\winddk\3790\src\general\ioctl\sys\filter.c @ 338]    0001 (0001) ndislwf!SioctlDeviceControl+0×103  ·

    相似的方法,永久移除断点号码,使用bc 1 (“Clear Breakpoint”)。现在该断点将会从断点列表中消除。

     

假设你希望临时停止使用某 个断点。bd (“Disable Breakpoint”) 将会完成它。你只需指定断点号码:

kd> bd 1

kd> bl

0 e [d:\winddk\3790\src\general\ioctl\sys\sioctl.c @ 123] 0001 (0001) SIoctl!DriverEntry

1 d [d:\winddk\3790\src\general\ioctl\sys\sioctl.c @ 338] 0001 (0001) SIoctl!SioctlDeviceControl+0×103

  • · 相似的方法,永久移除断 点号码,使用bc 1 (“Clear Breakpoint”)。现在该断点将会从断点列表中消除。
相关文章
|
8月前
|
NoSQL Linux 编译器
【Linux工具篇】调试器gdb
【Linux工具篇】调试器gdb
74 0
|
8月前
|
NoSQL Linux
内核调试学习笔记(一)
内核调试学习笔记(一)
79 0
内核调试学习笔记(一)
|
8月前
|
机器学习/深度学习 NoSQL
gdb调试
gdb调试
54 0
|
NoSQL Unix 程序员
GDB调试
GDB调试
68 0
|
NoSQL
1.13~1.16 GDB调试
1.13~1.16 GDB调试
106 0
1.13~1.16 GDB调试
|
缓存 Linux 网络安全
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(2)(★firecat推荐★)
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(★firecat推荐★)
845 0
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(2)(★firecat推荐★)
|
网络协议 开发工具 Windows
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(1)(★firecat推荐★)
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(★firecat推荐★)
542 0
Windows平台的Windbg/x64dbg/OllyDbg/VisualGDB调试器简介以及符号文件*.pdb总结(1)(★firecat推荐★)
|
存储 Java .NET
|
存储 数据建模 Go
Windbg内核调试之二: 常用命令
运用Windbg进行内核调试, 熟练的运用命令行是必不可少的技能. 但是面对众多繁琐的命令, 实在是不可能全部的了解和掌握. 而了解Kernel正是需要这些命令的指引, 不断深入理解其基本的内容. 下面, 将介绍最常用的一些指令, 使初学Kernel调试的朋友们能有一个大致的了解.
1272 0
|
Windows
Windbg内核调试之四: Dump文件分析
Dump 文件分析很大程度上就是分析蓝屏产生的原因。这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等)。说它是比较严重,是因为毕竟Windows还提供了dump文件给用户分析,至少能比较容易的找到错误的原因。
1652 0

热门文章

最新文章