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”)。现在该断点将会从断点列表中消除。

最新文章

  1. MySQL 安装 + 精简 + 配置
  2. c#读取excel
  3. Java 8新特性
  4. ajax get和post请求 后端接收并返回数据
  5. 从输入一个URL到页面呈现,网络上都发生了什么?
  6. C#的提交表单方式WebClient
  7. Hadoop core-site.xml 配置项列表
  8. 关于Opencv2.4.x中stitcher类的简单应用
  9. css 10 款非常棒的CSS代码格式化工具推荐
  10. 挖个坑,写一个Spring+SpringMVC+Mybatis的项目
  11. mysql登录出现1045错误修改方法
  12. C++编译连接过程中关于符号表的报错分析
  13. C# 保存屏幕截图
  14. linux的/etc/profile环境变量设置不生效【原创】
  15. Linux系统命令 3
  16. 仿迅雷播放器教程 -- duilib界面(13)
  17. c++期末考
  18. 关于AndroidStudio的打包数字签名以及多渠道发布
  19. 高精度减法--C++
  20. Chrome中使用flash引起cpu飙升问题的处理

热门文章

  1. Android项目目录结构
  2. python3 爬取百合网的女人们和男人们
  3. Perf工具
  4. Java程序只运行一个实例[转]
  5. GSS1
  6. POJ3155 Hard Life [最大密度子图]
  7. Jquery里面种的 JSON.parse() 与JSON.stringify() 的区别
  8. Vue脚手架(vue-cli)安装总结
  9. 听说你开发.NET还在用VS,小哥哥给你推荐全平台的Rider
  10. qt中的事件机制