zoukankan      html  css  js  c++  java
  • 【windows核心编程】双机调试操作

    1.1 中断与异常##

        计算机最重要的任务就是执行指令,只要你设置一个起始位置,他就会一条指令的执行下去。而中断和异常机制是为了防止计算机无休止地执行任意指令,出现错误时可以引导处理器转向正常控制流而诞生的两种操作。
      中断主要是由一个外部硬件产生,告知操作系统某些操作产生,比如键盘,鼠标,时钟等等,并且这是一个异步事件。
      异常通常是程序执行过程中,产生了问题,急需处理,与当前处理器正在执行的任务有关,这是一个同步事件。
    

    1.2 IDT##

      中断和异常是统一管理的,系统为每一种中断或者异常都提供一个处理函数,学名叫陷阱处理器,当中断或者异常发生时,当前指令的执行就会转到特定的陷阱处理器中,此陷阱处理器完成中断或异常的处理工作。
     由于终端或异常的类型很多,系统为了方便管理,把各种陷阱处理器放入到一张表中(数组),然后中断和异常发生时,CPU就根据中断或者异常的类型,转入到表中某项去执行中断或异常的处理工作。此表,我们称之为IDT(中断描述符表)。
    

    双机调试操作:###

    1、VirtualKD 是一个开源的调试辅助软件,能够帮助 WinDBG 与 VMWare 建立快速通讯
    网址: http://virtualkd.sysprogs.org/
    VirtualKD分为两部分
    1.在VirtualKD目录下,打开相对应的vmmon64.exe程序,并配置调试器windbg路径

    2.把 target文件夹拷贝到虚拟机中,并且在虚拟机中运行此文件夹下的 vminstall.exe,点 击“Instual” 按钮安装.
    然后重启虚拟机中的目标系统,此时会有调试模式,我们选择它启动

    此时程序卡在了启动处

    windbg自动运行起来
    在命令窗口输入 g ,让目标系统运行起来

    微软符号服务器下载符号###

    打开windbg-File-Symbol File Path

    填入 SRVd:mysymbolhttp://msdl.microsoft.com/download/symbols,【其中d:mysymbol是我自己自定义的目录名称。】,加载完符号后。

    查看目标系统的IDT表###

    在这里点击暂停目标程序

    输入命令:!idt /a

    IDT索引 作用
    0x00~0x14 存放各个异常的陷阱处理器
    0x14~0x20 保留
    0x20~0x29 空白,供系统和程序员自己分配注册使用
    0x2A~0x2E Windows自身使用的5个中断号
    0x30~0xFF 给硬件中断使用

    1.2.2 使用PC-Hunter查看IDT###

    打开PC-Hunter,点击内核钩子,点击下面的子项能够查看IDT表中的内容,所对应的陷阱处理中的内容。

    参考:

    使用VirtualKD构建双机调试
    http://blog.csdn.net/coc_k/article/details/52034927
    微软符号服务器下载符号总结
    http://www.cnblogs.com/maifengqiang/archive/2011/10/11/2206925.html

  • 相关阅读:
    如何在当前文件夹打开cmd(基于win10)
    Python命名空间和作用域
    Python定位模块_PYTHONPATH变量
    Python模块_import语句_from...import 函数名_from ... import *
    Python全局变量和局部变量
    Python变量作用域
    Python匿名函数_return语句
    Python函数参数
    Python按值传递参数和按引用传递参数
    Python函数调用
  • 原文地址:https://www.cnblogs.com/17bdw/p/6523334.html
Copyright © 2011-2022 走看看