建立调试会话

  • 用户层调试会话的建立

    • 直接创建进程并调试

    • 附加到已经打开的进程

      • 侵入式附加:接管正在运行的进程,可以进行调试

      • 非侵入式附加:只能读取进程信息,不能接收目标进程的调试事件

通常情况下一个程序只能被一个调试器调试,如果一个程序正在被调试时而我们又想要去查看他的信息时就可以使用非侵入式附加的方式,实际不能调试,只能查看它的信息。

  • 内核层调试会话的建立

    • 使用物理机器调试虚拟机,建立双击调试环境

    • 使用类似用户层的非侵入式调试,仅仅查看内核中的信息,本地内核调试

必要条件:

  1. 需要以调试的模式启动windows操作系统

开启虚拟机按F8,出现以下界面,选择调试模式

  1. 需要以管理员的方式运行Windbg

  2. 操作系统与WinDbg版本需要对应

打开Windbg选择内核调试,本地确定,开始查看!

WindDbg界面概览

  1. 工具栏详解

2.  窗口选项

符号与源码

  • 符号文件

    • 概念:是在编译器编译可执行文件的时生成的一些文件,通常我们在windows平台遇到的符号文件叫做pdb文件,其中包括

      • 全局变量类型、名称、地址

      • 局部变量类型、名称、地址

      • 函数名称、原型、地址

      • 变量、结构体类型的定义

    • 符号文件对于程序的调试非常重要,无论源码调试和非源码调试

    • 设置方法一:

    

  • 方法二:设置一个环境变量 _NT_SYMBOL_PATH

  • 方法三:使用命令.sympath+

  • 设置完路径后加载符号

    • 使用命令 .reload刷新符号加载路径

    • 使用命令 ld + [模块名]来加载某一个模块的符号

    • 通过网络来获取符号文件

设置Symbol File (.pdb 文件)路径 SRVc:\mysymbol http://msdl.microsoft.com/download/symbols

srvd:\SymbolsLocalhttp://msdl.microsoft.com/download/symbols

调试的时候会从微软网站上下载符号,并存放在c:\mysymbol目录中

如果有其它符路径用分号隔开,如 ;c:\pdb

  • 源码调试

符号文件加载完成就可以进行源码调试

Windbg工作空间

  • 当前Windbg中的工作环境称之为工作空间

    • 当前的界面布局等调试器设置等信息

    • 调试项目有关的属性,参数以及调试器设置等信息

  • 默认工作空间

    • 基础工作空间

    • 默认内核态工作空间

    • 默认用户态工作空间

    • 默认转储文件工作空间

默认工作空间是以单个分析过程为区分的,例如当使用WinDbg分析一个应用程序时会根据可执行文件的路径和文件名为其建立一个默认的工作空间。

例如下面这个工作空间在保存之后,下次打开此程序的就会自动显示这个布局,别的程序就不可以使用这个工作空间

  • 命名工作空间

    • 在WinDbg中可以为工作空间命名,可以把满意的工作空间保存起来或者转储成文件,下次调试起来就非常的方便了。

    • 保存在WinDbg中

    • 保存在文件中,可以带到任何地方只需要调试程序时,打开,Open WorkSpace in File找到保存的文件,就可以使用自己以前保存的工作空间了

WinDag基础1的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. C语言入门-指针

    终于到了精髓的地方了,这确实有点懵,总感觉这太麻烦了,而且写着也不爽,还是怀念py或者java,但也没办法,还是要继续学下去. 一.运算符& scanf("%d" , &a ...

  2. 玩转 SpringBoot 2 快速整合拦截器

    概述 首先声明一下,这里所说的拦截器是 SpringMVC 的拦截器 HandlerInterceptor.使用SpringMVC 拦截器需要做如下操作: 创建拦截器类需要实现 HandlerInte ...

  3. 05-padding

    padding padding:内边距,内容到边框的距离 而且,padding是有背景颜色的.background-color属性将填充所有border以内的区域(不包括border) padding ...

  4. 经典案例复盘——运维专家讲述如何实现K8S落地(摘抄)

    以下是运满满K8s容器化进程记录,摘抄一下,方便以后查阅. 背景介绍 运满满自开始微服务改造以来,线上线下已有数千个微服务的 Java 实例在运行中.这些 Java 实例部署在数百台云服务器或虚机上, ...

  5. 夯实Java基础系列11:深入理解Java中的回调机制

    目录 模块间的调用 多线程中的"回调" Java回调机制实战 实例一 : 同步调用 实例二:由浅入深 实例三:Tom做题 参考文章 微信公众号 Java技术江湖 个人公众号:黄小斜 ...

  6. JS的加减乘除高精度

    //除法函数,用来得到精确的除法结果 //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显.这个函数返回较为精确的除法结果. //调用:accDiv(arg1,arg2) ...

  7. jq方法写选项卡的基本原理以及三种方法

    使用jq写选项卡,告别了繁琐的循环以及命名规范 基本原理: 1.当某一个btn被选中时,将这个btn的背景颜色设为橘色,其余兄弟btn背景颜色设为空(none) 2.如果子div与btn的索引相同,就 ...

  8. 在Linux环境下采用压缩包方式安装JDK 13

    本文地址:https://www.cnblogs.com/oberon-zjt0806/p/11663731.html 可以,转载,出处,格式,懂?? 什么是JDK?? 好吧如果你不知道这个问题的话我 ...

  9. 重学Golang系列(一): 深入理解 interface和reflect

    前言 interface(即接口),是Go语言中一个重要的概念和知识点,而功能强大的reflect正是基于interface.本文即是对Go语言中的interface和reflect基础概念和用法的一 ...

  10. Qt+VC2010+glew环境安装配置

    Qt的源码及预编译安装包在 Qt Archive下载,http://download.qt.io/archive/qt/, 目前最新的是Qt5,其中和Qt4不同的是,Qt5多了个QOpenGLWidg ...