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

使用WinDbg内核调试的更多相关文章

  1. Windbg内核调试之四: Dump文件分析

    Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...

  2. 使用WinDbg内核调试[转]

    Technorati 标签: windbg,内核调试 WINDOWS调试工具很强大,但是学习使用它们并不容易.特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器 ...

  3. Windbg内核调试之三: 调试驱动

    这次我们通过一个实际调试驱动的例子,来逐步体会Windbg在内核调试中的作用.由于条件所限,大多数情况下,很多人都是用VMware+Windbg调试内核(VMware的确是个好东西).但这样的调试需要 ...

  4. Windbg内核调试之一: Vista Boot Config设置

    Windbg进行内核调试,需要一些基本的技巧和设置,在这个系列文章中,我将使用Windbg过程中所遇到的一些问题和经验记录下来,算是对Kernel调试的一个总结,同时也是学习Windows系统内核的另 ...

  5. Windbg内核调试之二: 常用命令

    运用Windbg进行内核调试, 熟练的运用命令行是必不可少的技能. 但是面对众多繁琐的命令, 实在是不可能全部的了解和掌握. 而了解Kernel正是需要这些命令的指引, 不断深入理解其基本的内容. 下 ...

  6. 关于内核调试(Windbg)的虚拟机配置问题

    注:本文配置 环境为VMware® Workstation11.1.2 build-2780323+Windows xp SP2+Windbg 6.12.0002.63 x86 *在win7以后的操作 ...

  7. xp+WinDBG+VMware调试内核

    呵呵,搞点突兀的标题而已.其实说的还是如何使用WinDBG和VMware来搭建调试内核的环境而已,这些网上已经有数不清的教程了,不过我喜欢自己亲手写一下.第一,把这个过程写一遍能加深印象,就算以后忘记 ...

  8. 【旧文章搬运】Windbg+Vmware驱动调试入门(四)---VirtualKD内核调试加速工具

    原文发表于百度空间,2009-01-09========================================================================== 今天又想起 ...

  9. Windbg程序调试--转载

    WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. WinDbg是微软很重要的诊断调试工具: 可以查 ...

随机推荐

  1. 模型的继承 -- Django从入门到精通系列教程

    该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...

  2. pip相关工具使用小结

    最近写taffy的时候用到了两个pip相关的小工具. 一个是pip-review批量更新lib库,一个是pipreqs生成基于项目的requirements.txt. 1. pip相关命令 #更新单个 ...

  3. WEB消息推送-原理篇

    这篇文章主要讲述B/S架构中服务器“推送”消息给浏览器.内容涉及ajax论询(polling),comet(streaming,long polling).后面会附上源代码. 最近在工作有这么一个需求 ...

  4. CSS核心内容之浮动

    1.浮动涉及到左浮动,右浮动,清除浮动. 2.浮点的特点: 1.向指定的方向浮动,并且让出空间 2.如果后面的元素也是浮动的,那么后面的元素就会在碰到前面的浮动的元素或者边框时,就定位在那里 3.如果 ...

  5. 洛谷 [P1024]一元三次方程求解

    一道水题然而坑点很多. #include <iostream> #include <cstdio> #include <algorithm> #include &l ...

  6. vue2.0父子组件之间通信

    父组件是通过props属性给子组件通信的来看下代码: 父组件: <parent> <child :child-com="content"></chil ...

  7. HTML标签的命名/CSS标准化命名大全

    在一个内容较多的HTML页面中,需要设计许多不同的框架,再为这些不同的框架及内容进行分类,给予相应的名称,从而使得网页结构更加清晰,也为工作提供了方便.许多新手朋友在设计一个HTML文件时,可能只会依 ...

  8. php+redis 学习 六 订阅

    <?php header('content-type:text/html;chaeset=utf-8'); /** * redis实战 * * 订阅 * * @example php subsc ...

  9. javamail+ical4j发送会议提醒

    本篇讲述小编在使用ical4j时对其的理解与使用,留作笔记的同时希望能帮助到大家! 初学者可以先了解下ical4j的基本信息: iCalender编程基础,了解与使用ical4j:https://ww ...

  10. php实现粘贴截图并完成上传功能

    <?php header("Access-Control-Allow-Origin:*"); $url = 'http://'.$_SERVER['HTTP_HOST']; ...