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 我新建了两个
随机推荐
- 【题解】Luogu P5339 [TJOI2019]唱、跳、rap和篮球
原题传送门 这题zsy写的是\(O(n^2)\),还有NTT\(O(n^2\log n)\)的做法.我的是暴力,\(O(\frac{a b n}{4})\),足够通过 考虑设\(f(i)\)表示序列中 ...
- elasticsearch配置文件中http.cors.x字段有哪些用途和用法
http.cors.enabled 是否支持跨域,默认为false http.cors.allow-origin 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使 ...
- 高并发场景下System.currentTimeMillis()的性能问题的优化
高并发场景下System.currentTimeMillis()的性能问题的优化 package cn.ucaner.alpaca.common.util.key; import java.sql.T ...
- 异常来自 HRESULT:0x8007000B
这个是64位应用32位产生的问题.相信大家搜索的时候很多都是建议改把项目的AnyCPU改成X86,可是很不幸我的改不了. 终于搜索了半天后发现,IIS里解决才是根本办法: .在IIS配置里面启用32位 ...
- 【转载】WPS通过设置密码的方式对Excel文件加密
有时候Excel文件中可能包含一些敏感数据,此时希望对Excel文件进行加入密码的形式进行加密保护,在WPS软件和Office Excel软件中都支持对Excel文件进行密码保护,设置了密码保护的Ex ...
- Docker 基础篇 入门篇
1.Docker入门 1.为什么要用docker? 相比于传统: 部署非常慢 成本非常高 资源浪费 难于迁移和扩展 可能会被限定硬件厂商 由于物理机的诸多问题,后来出现了虚拟机 一个物理机可以部署多个 ...
- Oracle数据库之初识部分知识
Oracle是比MySql更为严格的数据库.使用时需要更加严谨. 一.安装注意事项: 1.选择地址时需要注意好不能有汉字,以免造成安装的时候注册表显示监听失败: 2.可视化窗口PLSQL编辑器(相当于 ...
- Git查看某一个文件的历史提交信息
工作中我们有时候想要查看某一个文件的历史提交版本,] 还想看都修改过那些内容,那么这两个简单的命令就会帮到你了, 话不多说,comeBaby...... 1,首先查看一个文件的历史提交信息 git l ...
- RSA算法二:迪菲赫尔曼公式变形
- Java 参数个数可变的函数
示例: package my_package; public class Test { public static void main(String[] args) { out("重庆师范大 ...