zoukankan      html  css  js  c++  java
  • Windows Debugging之二

    Kernel mode的debugging需要有一个目标机和一个宿主机。目标机运行着内核态的程序,宿主机内运行着debugger。

    目标机与宿主机没有必要非要使用同一系统或者同一版本的windows。

    内核态debugging不需要特定的自由版本或者检查版本(free version and checked version)的build。宿主机和目标机在free还是checked上没限制。

    默认的目标机的debug输出串口为COM2,修改变量debugport可以修改这个。

    默认的宿主机的输入串口为COM1. 修改_NT_DEBUG_PORT可以修改这个。

    Ready目标机

    若要让目标机允许内核态的debugging,要修改boot.ini文件,给它添加一个/debug选项。boot.ini一般在C盘根目录下可以找到。如果你使用的是Windows XP,那么请参考http://support.microsoft.com/kb/289022/zh-cn 来寻找修改boot.ini的方式。

    一个例子:

    [boot loader]

    timeout=30

    default=multi(0)disk(0)rdisk(0)partition(1)\WINNT

    [operating systems]

    multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect /MAXMEM=512 /DEBUGPORT=COM1 /BAUDRATE=115200

    当Windows无法启动,你没有机会编辑boot.ini时,你可以开机时按F8,采用安全模式启动Windows。安全模式只在启动时加载最少的必要驱动和最少的系统设备,如果启动成功,你就可以编辑boot.ini了。

    如果启动分区被格式化为FAT,那么你可以使用MS-dos,然后编辑boot.ini. 由于boot.ini是隐藏的,在dos中可以使用如下的命令来看到它:dir /ah.

    可以使用如下的命令来去掉它的隐藏和只读属性。attrib –r –s –h boot.ini

    Ready宿主机

    要开始内核态或用户态的debugging,宿主机必须安装所有必要的symbol文件,还要设置一些环境变量。

    如下的批处理文件可以帮助你快速设置一些环境变量。

    SET _NT_SYMBOL_PATH=z:\symbols\winnt\2195\symbols

    SET _NT_ALT_SYMBOL_PATH=z:\symbols\winnt\2195sp1\symbols

    SET _NT_DEBUG_PORT=COM1

    SET _NT_DEBUG_BAUD_RATE=115211

    SET _NT_LOG_FILE_OPEN=z:\debug\debug.log

    z:\debug\kd.exe -v -n

    Symbol文件

    Symbol文件保存有各种在运行二进制文件时用不着的信息,这些信息在debugging的时候才比较有用。典型的,Symbol文件中包含有

    1. 全局变量

    2. 局部变量

    3. 函数名和他们的入口地址

    4. FPO数据

    5. 源代码行号

    不管是交互式的debugging还是分析crash dump文件,都需要symbol文件,debugger需要加载它们。

    注意:宿主机上安装的symbol文件应该和目标机上安装的windows版本相匹配。

  • 相关阅读:
    【Python3】调用webserver接口
    【Robot Framework】字符串判断,if语句多执行条件,多执行语句
    【Robot Framework】BuiltIn库
    jenkins运行报错的两个坑
    【Python3】jsonpath-rw处理Json对象
    使用Grunt自动化任务
    用nodesjs+grunt+bower+angularjs搭建项目
    浅谈AngularJS中的$parse和$eval
    AngularJS Controller之间的通信
    AngularJS动态绑定html
  • 原文地址:https://www.cnblogs.com/awpatp/p/1592640.html
Copyright © 2011-2022 走看看