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

    什么是debugging?

    从程序或者设计中找到并移除bug,就是debugging。还有一个意思就是使用工具来确认系统失败或者程序错误的可能原因。

    一些基本术语

    Call Stack

    是一种基本的,用来保存程序函数调用的,并包括所涉及的传入参数的,数据结构。

    Exception

    一个由某个特别的机器指令的执行导致的错误情况。可以使硬件引起的也可以使软件引起的。

    I/O Request Packet (IRP)

    表示io请求并控制io请求执行的一种数据结构。

    Interrupt

    一种正常命令的执行被打断,然后控制被传送给中断处理器的情况。

    Interrupt Request Level (IRQL)

    中断的优先级。优先级高于处理器的IRQL的中断,就会优先处理,低的就会被阻挡掉,不会影响当前的执行。

    Kernel Mode

    特权程序和操作系统的处理器访问模式。这种模式下的进程有权访问操作系统的任何部分,并不像user-mode进程那样受限制。也就是说,所有的内核态进程共享相同的地址空间。

    Nonpaged Pool

    指系统内存中不能被按页映射到磁盘上的部分。

    Paged Pool

    与上面相反,这个就是可以映射到磁盘的部分了。它不仅仅指已经被映射到磁盘上了的内存,也包括任意准许映射的内存。

    Paging

    内存管理器把内存分页从内存中转移到磁盘中的一种虚拟内存操作。当一个线程寻找一个分页没找到的时候,就会发生Page fault。

    Process

    进程就是一系列资源的容器,这些资源供执行程序的线程来使用。Program和Process看起来很像,他们有着根本的不同。Program是一个静态的指令序列,而Process是一个资源的容器。

    Register

    寄存器,也就是由CPU直接使用的超快速的存储器。

    Thread

    线程是一个进程内的用来执行的实体。

    User Mode

    应用程序使用的处理器访问模式。在该模式下的进程在它们自己的虚拟地址上使用CPU。他们不能拥有对系统许多部分的直接访问权,包括系统硬件,没分配给他们的内存,还有一些可能危及到系统完整性的敏感地带。因为在这种模式下的进程已经与系统和其他用户态模式下的进程隔离开了,他们不能访问这些资源。

    Attach

    将debugger与运行中的程序连接起来的动作。

    Blue Screen

    大名鼎鼎的蓝屏,当Windows操作系统遭遇硬件问题时,或者遭遇关键数据不一致,或者其他严重的错误时,操作系统会自动的当机,然后在蓝色的屏幕上显示错误信息。

    蓝屏时最重要的信息就是那个message code,也叫bug check code。

    Breakpoint

    debugger允许用户指定一个点,在该点出停止程序的执行。

    Crash Dump File

    当严重错误出现时,你可以指定操作系统写入信息到硬盘上的crash dump文件中。这个文件中包含debugger可以用来分析错误的信息。

    Debug Session

    实际的使用软件debugger来分析一台电脑上崩溃的软件组件的过程就叫做debug session,也可以指分析一个已经保存下来的dump文件的过程。

    Disassembly / Assembly Code

    反汇编,汇编代码。微处理器都只能识别特别为它定制的一系列指令的集合。当一个程序编译结束,编译器就会把程序加工成为一些列的底层硬件可以理解的指令。将二进制的指令换成可以理解的助记符,就得到了汇编代码。这个过程叫做反汇编。

    Host Machine

    运行debugging session的机器叫做host machine。

    Local debugging

    当debugger,被debug的程序都在一台机器上的时候,这样的debugging session叫做local debugging。

    Remote Debugging

    debugger在host machine中,被debug的程序在目标机器上。

    Symbol Files

    包括源代码和所有的标示符(变量,函数名)映射的,在编译时创建的,给debugger使用的文件。

    Target Application

    也就是debuggee

    Target Machine

    目标机器,前面的解释挺清楚了。

    debugger的种类

    CDB--- Microsoft Console Debugger

    NTSD---Microsoft NT Symbolic Debugger

    KD--- Microsoft Kernel Debugger

    WinDbg--- Microsoft Windows Debugger

  • 相关阅读:
    opencvsharp BitmapSource图片截取问题
    wpf RenderTargetBitmap保存控件为图片时图片尺寸不对的问题
    c# ??和运算符先后的问题
    wpf 窗口打开后默认设置控件焦点
    win10 requireAdministrator设置开机自启动无效的解决方案
    Gogs webhook钩子 验签 (PHP版本)
    MongoDB管理用户的认证机制
    RocketMQ使用指南及参数详解
    微信公众号h5获取用户openId的方法和步骤
    php中常用的正则表达式函数
  • 原文地址:https://www.cnblogs.com/awpatp/p/1592576.html
Copyright © 2011-2022 走看看