• 使用Windbg调试内核


    Windbg是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。

    1.http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx下载Install Debugging Tools for Windows 32-bit Version 

    2.http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx下载Windows Symbol Packages,安装到D:Program FilesSymbols 

    3.启动Windbg,File->Symbol File Path填写以上Symbols安装路径:

    D:Program FilesSymbols

    4.File->Kernel Debug->Local,在下面执行lkd> !process出现以下错误:

    NT symbols are incorrect, please fix symbols

           这个可能是D:Program FilesSymbolsexe toskrnl.pdb破损所致。

    解决方案:将第3步中的Symbol File Path填写为:

    D:Program FilesSymbols;

    SRV*D:Program FilesSymbols*http://msdl.microsoft.com/download/symbols

    按照这样设置,WinDbg将先从本地文件夹D:Program FilesSymbols中查找Symbol,如果找不到,则自动从MSSymbol Server上下载所需要的Symbol,并且在本地D:Program FilesSymbols文件夹下维持一份拷贝。 

    5.内核调试

    FileàOpenExecutableà可以选择一个可执行文件进行调试;
    FileàAttache to a Processà可以选择一个运行中的进程,并对其进行调试;

    FileàKernel DebugàLocalà可以选择本地内核调试。

    一旦连接到了内核调试模式中,你可以使用众多的内核扩展命令(以“!”开头)来显示内核数据结构的内容。

    6.用内核扩展命令查看常见内核对象数据结构(每条命令以分号隔开)

    (1)进程:lkd> !process [0 0]dt nt!_eprocessdt nt!_kprocess

    (2)线程:lkd> !threaddt nt!_ethreaddt nt!_kthread

    (3)I/O请求包:lkd> dt nt!_irp!irpfind

    4)常见同步对象:lkd> dt nt!_keventlkd> dt nt!_kmutantlkd> dt nt!_ksemaphore

    (5)作业:lkd> !job会话(lkd> !session);内存管理(lkd> !vm)的命令等。

    显示内核符号中所包含的类型信息的内核结构列表àlkd> dt nt!_*若需递归显示子结构请使用“-r”开关。在.hh后面添加关键字,将显示该命令的帮助,例如:lkd>.hh irp

    详情参考:Debugging Tools For Windows help referenceàDebuggersàDebugger ReferenceàDebugger Extension Commands

    下图是内核模式调试显示I/O完成端口IO_COMPLETION_CONTEXT数据结构和进程控制块。

    有兴趣的可以参考以下文章,进一步学习Debugging Tools for Windows.

    Windbg配置和使用基础》

    http://hi.baidu.com/estellejiang/blog/item/34d308fab249078a9f514638.html

    《使用Windbg调试程序》

    http://hi.baidu.com/cppiod/blog/item/58efaf86eb696d3f67096ec2.html

    《用Windbg调试一个Windows自带扫雷程序的逻辑bug

    http://blog.csdn.net/v_jzho/archive/2008/10/03/3014681.aspx

    windbg调试实例(4--句柄泄露》

    http://www.cnblogs.com/vivilisa/archive/2009/04/16/1437529.html

     

  • 相关阅读:
    Hihocoder-小Hi的烦恼
    Python包下载与离线安装
    Shell输出颜色设置
    MySQL主从配置
    MySQL初始化与用户配置
    [转]常用 GDB 命令中文速览
    搭建github静态博客
    树莓派上手
    vim安装与配置
    数组,看了你就懂了!
  • 原文地址:https://www.cnblogs.com/vcerror/p/4289225.html
Copyright © 2020-2023  润新知