WinDbg的工作空间---Work Space
一、什么是工作空间
Windbg把和调试相关的所有配置称为workspace。WinDbg使用工作空间来描述和存储调试项目的属性、参数及调试器设置等信息。工作空间与vc中的项目文件很相似。退出windbg时,它会将会话配置保存在工作区中。工作区使您能够轻松地保留从一个会话到另一个会话的设置。您还可以手动保存或清除工作区,甚至可以使用工作区保存仍在进行中的调试会话。
二、工作空间保存的信息
WinDbg的工作空间中保存了一下信息:
- 调试会话状态:包括,断点、打开的源文件、用户自定义别名。
- 调试器设置:包括符号文件路径,可执行映像文件路径,源文件路径,用I+/I-命令设置的源文件选项,日志文件设置,通过启动内核调试对话框设置内核调试连接设置,最近一次打开文件对话框所使用的路径和输出设置等
- WinDbg图形界面信息:包括WinDbg窗口标题、默认字体、是否自动打开反汇编窗口、窗口在桌面的位置、打开的子窗口、以及每个子窗口的状态等。
当您使用windbg作为调试客户机时,它的工作区只保存您通过图形界面设置的值。不会保存通过调试器命令窗口所做的更改。(此限制保证只反映本地客户端所做的更改,因为调试器命令窗口接受来自所有客户端和调试服务器的输入。
此外,断点信息保存在工作区中,包括断点地址和状态。会话结束时处于活动状态的断点在下一个会话启动时处于活动状态。但是,如果尚未加载适当的模块,那么其中一些断点可能无法解析。通过符号表达式、行号、数字地址或在源窗口中使用鼠标指定的断点都保存在工作区中。在反汇编或调用窗口中使用鼠标指定的断点不会保存在工作区中。 如果正在调试多个用户模式进程,则只保存与进程零关联的断点。
三、工作空间保存的位置
WinDbg默认使用注册表来保存工作空间设置,其路径为:HKEY_CURRENT_USER/Software/Microsoft/WinDBG/Workspaces,在此路径下有四个键:User、Kernel、Dump和Explicit。前三个键分别用来保存用户态调试、内核态调试、调试转储文件时使用的默认空间。Explicit用以存储命名的工作空间。在四个键下的每个键对应于一个工作空间。键值名为工作空间的名称,键值就是这个工作空间的配置数据。WinDbg支持使用文件来保存工作空间。这可以使用菜单Save workspace to File。使用Delete workSpaces可以删除工作空间。更快的方法是直接删除保存在注册表中的键值。
四、工作空间分类
WinDbg定义了两种工作空间,一种为默认工作空间,另一种为命名的工作空间。当没有明确使用某个命名空间时,WinDbg总是使用默认工作空间。
- 默认工作空间
windbg自己预先创建的一系列的空间 - 命名空间
可以把你的配置保存为一个命名的workspace保存在注册表中,并且在需要的时候应用它。Windbg软件本身也会根据你所调试的可执行程序或dump文件,自动保存为命名workspace。这就是为什么你调试了一次HelloWorld程序后,下次再次调试的时候,Windbg会自动打开很多相关的源文件,并自动加载符号的原因。
五、WinDbg的默认工作空间
WinDbg在安装后就有预先创建了一些列默认空间。分别为基础工作空间、默认内核工作空间、默认远程调试工作空间、特定处理器工作空间、默认用户态工作空间。它们分别定义了在WinDbg在各种条件下的一些配置、参数设置等。
- 基础工作空间:当调试会话尚未建立,WinDbg处于闲置状态时,会使用此空间作为默认空间。
- 默认内核工作空间:当WinDbg开始内核调试,但是尚未与调试目标建立连接时,会使用此空间作为默认空间。
- 默认远程调试工作空间:当通过调试服务器进行远程调试时,会使用此空间作为默认空间。
- 默认的用户态工作空间:当使用WinDbg调试一个已运行的进程时,会使用这个空间作为默认工作空间。
- 特定处理器工作空间:在windbg连接到目标计算机之后,在内核模式调试期间使用特定于处理器的工作区。对于基于x86和基于x64的处理器,有单独的特定于处理器的工作区。
当WinDbg打开一个应用程序开始调试时,调试器会 根据可执行文件的路径和文件名为其创建一个默认工作空间,如果已经存在工作空间,就使用已存在的。在WinDbg的文件菜单中可以使用另存为..创建一个命名的工作空间。
六、工作空间的创建和加载
当windbg创建用于调试的用户模式进程时,将为该可执行文件创建一个工作区。每个创建的可执行文件都有自己的工作区。当windbg分析转储文件时,将为该转储文件分析会话创建一个工作区。每个转储文件都有自己的工作区。开始调试会话时,将加载相应的工作区。结束调试会话或退出windbg时,将显示一个对话框,询问您是否要保存对当前工作区所做的更改。如果使用-qycommand line选项启动windbg,则不会显示此对话框,工作空间将自动保存。此外,如果使用-q命令行选项启动windbg,则不会显示此对话框,也不会保存任何更改。
工作区以累积方式加载。基本工作区始终首先加载。开始特定调试操作时,将加载相应的工作区。因此,大多数调试是在加载两个工作区之后完成的。内核模式调试在加载了三个工作区(基本工作区、默认内核模式工作区和特定于处理器的工作区)之后完成。
注意:调试信息窗口的布局是工作区累积行为的一个例外。每个窗口的位置、停靠状态和大小仅由您打开的最新工作区决定。此行为包括监视窗口的内容和在每个内存窗口中查看的位置。打开新工作区时,不会清除调试器命令窗口中的命令历史记录,但会重置所有其他窗口状态。
- 使用-w命令行选项打开并加载命名工作区。
- 使用-wf命令行选项打开并从文件加载工作区。
- 使用-wx命令行选项禁用所有自动工作区加载。只有显式工作区命令才能导致保存或加载工作区。
- 通过单击“文件”菜单上的“打开工作区”或按ctrl+w打开并加载命名工作区。
- 单击“文件”菜单上的“保存工作区”,保存当前默认工作区或当前命名工作区。
- 为当前工作区分配一个名称,并通过单击“文件”菜单上的“将工作区另存为”将其保存。
- 单击“文件”菜单上的“清除工作区”,从当前工作区中删除特定项目和设置。
- 通过单击“文件”菜单上的“删除工作区”来删除工作区
- 通过单击“文件”菜单上的“在文件中打开工作区”,从文件中打开并加载工作区。
- 通过单击“文件”菜单上的“将工作区保存到文件”,将工作区保存到文件
WinDbg的工作空间---Work Space的更多相关文章
- Windbg的主题---Theme
主题是预配置的windbg工作区,其中包含调试信息窗口的有用配置.任何主题都可以保存为基本工作区.Windows调试工具包中的主题作为一组注册表文件(扩展名为.reg)提供.当您积累更多的调试会话时, ...
- Windbg用法详解
工作空间 WinDBG的工作空间中保存了以下几种信息 调试会话状态: 包括断点,打开的源文件,用户定义的别名(alias)等. 调试器设置:包括符号文件路径,可执行映像文件路径,源文件路径,用I+/I ...
- WinDbg使用介绍
Windbg工作空间 WinDbg使用工作空间来描述和存储调试项目的属性.参数及调试器设置等信息.工作空间与vc中的项目文件很相似.WinDbg定义了两种工作空间,一种为默认工作空间,另一种为命名的工 ...
- WWDC2018 之 优化 App Assets Optimizing App Assets
该篇博客记录了观看WWDC Session227<Optimizing App Assets>的内容以及一些理解. 引言 该session主要讲述了使用Assets Catalog的新特性 ...
- Windbg 基础命令 《第一篇》
Windbg.exe是Windows的一个调试工具,它支持两种调试模式,即“实时调试模式(Living)”和“事后调试模式(Postmortem)”. 实时模式:被调试的程序正在运行当中,调试器可以实 ...
- Windbg调试命令详解
作者:张佩][原文:http://www.yiiyee.cn/Blog] 1. 概述 用户成功安装微软Windows调试工具集后,能够在安装目录下发现四个调试器程序,分别是:cdb.exe.ntsd. ...
- 调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令
调试SQLSERVER (三)使用Windbg调试SQLSERVER的一些命令 调试SQLSERVER (一)生成dump文件的方法调试SQLSERVER (二)使用Windbg调试SQLSERVER ...
- Windbg程序调试--转载
WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. WinDbg是微软很重要的诊断调试工具: 可以查 ...
- ROS创建工作空间(三)
查看正在使用的ROS工作空间,使用命令 echo $ROS_PACKAGE_PATH 我新建了两个
随机推荐
- 数据采集,SCADA, 使用MQTT的方式来进行消息单/双向传输,什么场景使用MQTT
1.先来了解下: 看完得出关键字:发布.订阅模式,事件驱动,主题,生产与消费解耦 2.轻量级 普通的socket连接对服务器的消耗太大了,socket服务端是很消耗资源的,一台服务器能链接的客户端是有 ...
- 解决 Url is blocked: Requests to the local network are not allowed
问题: 我在学习GitLab + Jenkins 自动化部署时,在GitLab的 MyProject => Settings => Integrations中输入完 &qu ...
- 通过对比ASCII编码来理解Unicode编码
Unicode是个规范,可以理解为一个索引表,世界上所有字符基本上在这个索引表中都能找到唯一一个数码与之对应,就像ASCII码表一样,也是一个规范,也可以看成是一个索引表,所有的英文字符都可以在这个索 ...
- Docker 使用入门 Hello World
结合上一篇的所说的内容:现在安装好了Docker 安装好了就要用嘛,所以,先走一个Hello World docker run ubuntu:15.10 /bin/echo "hello w ...
- 四种方法获取可执行程序的文件路径(.NET Core / .NET Framework)
原文:四种方法获取可执行程序的文件路径(.NET Core / .NET Framework) 本文介绍四种不同的获取可执行程序文件路径的方法.适用于 .NET Core 以及 .NET Framew ...
- windows桌面远程连接突然不能双向复制文件
远程桌面连接windows 2008,突然无法在本地和服务器之间互相复制文件.根据微软的说明,由rdpclip.exe进程来控制,打开远程服务器的任务管理器,看到rdpclip.exe进程存在,即可进 ...
- win7安装镜像注入USB3.0,NVMe驱动
现在的新款主板和笔记本因为原生自带了USB3.0和NVMe,在安装WIN7的时候会出现进入安装界面后不识别USB设备且在硬盘列表中无法读取M.2类型的固态硬盘信息.导致这个现象的原因就是在WIN7安装 ...
- 1.Javascript实现Symbol
// 当调用 Symbol 的时候,会采用以下步骤: //1. 如果使用 new ,就报错 //2. 如果 description 是 undefined,让 descString 为 undefin ...
- 创建图 figure & figcaption
如报纸.杂志.报告等其他媒介上看到过图.通常,图是由页面上的文本引述出. 在HTML5出现之前,没有专门实现这个目的的元素,因此一些开发人员想出了他们自己的解决办法(通常会使用不那么理想的.没有语义的 ...
- CentOS - Eclipse安装Shelled
一,下载Shelled: https://sourceforge.net/projects/shelled/ 二,打开Eclipse,以离线方式安装: Help->Install New Sof ...