在WinDbg中,可以通过输入命令、使用“局部变量”窗口或使用“监视”窗口查看局部变量。局部变量窗口显示当前作用域中的本地变量的所有信息。

如何打开Locals窗口

  • 通过菜单View--->Locals
  • 通过快捷键Al+3
  • 通过工具栏

局部变量窗口

通过上面的方式打开的窗口如下:

局部变量窗口可以包含四列。Name列和Value列始终显示,Typecast列和Locations列是可选的。要显示“Typecast”和“Locations”列,请分别单击工具栏上的“Typecast”和“Locations”按钮。

在局部变量窗口中,可以执行以下操作:

  • 名称列显示每个本地变量的名称。 如果变量是一种数据结构,其名称旁边显示复选框。 若要展开或折叠结构成员的显示,请选择或清除该复选框。

  • 列显示每个变量的当前值。

    • 若要为变量输入新值,双击当前值并键入新值,或编辑旧值。 (剪切、 复制和粘贴命令是可用来进行编辑。)您可以键入任何C++表达式。
    • 若要保存新值,请按 ENTER。
    • 若要放弃的新值,请按 ESC。
    • 如果键入无效的值,按 ENTER 键时,将重新出现的旧值。

    类型的整数int显示为十进制值; 类型的整数UINT显示在当前的基数。 若要更改当前的基数,请使用 n (设置数量 Base) 命令在调试器命令窗口中。

  • 类型列 (如果它显示在局部变量窗口中) 显示每个变量的当前数据类型。 每个变量显示在其自己的数据类型为正确的格式。 数据结构具有其类型名类型列。 其他变量的类型显示在此列中的"输入新的类型"。

    如果您双击"输入新类型",您可以通过输入新的数据类型强制转换类型。 此强制转换更改仅在局部变量窗口中; 此变量的当前显示它不会更改任何内容在调试器中或在目标计算机上。 此外,如果输入中的新值列中,你输入的文本将分析基于符号的实际类型而不是任何新型中输入类型列。 如果关闭并重新打开局部变量窗口,您将丢失的数据类型更改。

    您还可以输入中的扩展命令类型列。 调试器会将该符号的地址传递到此扩展插件,并将在一系列的当前行下方的可折叠行中显示生成的输出。 例如,如果在此行中的符号是有效的线程环境块的地址,则可以输入 ! teb类型列来运行 ! teb 此符号的地址上的扩展。

  • 位置列 (如果它显示在局部变量窗口中) 显示了一种数据结构的每个成员的偏移量。

  • 如果本地变量是一个包含 Vtable,类的实例名称列显示 Vtable,并且可以扩展 Vtable 以显示函数指针。 如果在指向派生的实现,表示法的基类中包含 Vtable _vtcast_类显示来指示添加,则由于派生类的成员。 这些成员展开类似于派生的类类型。

局部变量窗口有一个包含两个按钮的工具栏 (Typecast位置) 以及一个具有其他命令的快捷菜单。 若要访问菜单,请右键单击该窗口的标题栏或单击窗口右上角附近的图标 ()。 工具栏和菜单包含以下按钮和命令:

  • (工具栏和菜单)Typecast将显示类型列打开和关闭。

  • (工具栏和菜单)位置将显示位置列打开和关闭。

  • (仅限菜单)显示 16 位值作为 Unicode此窗口中显示的 Unicode 字符串。 此命令将打开和关闭全局设置,它会影响局部变量窗口、 监视窗口和调试器命令输出。 此命令相当于使用 .enable_unicode (启用 Unicode 显示器) 命令。

  • (仅限菜单)始终显示在默认数字基数导致要在显示中而不是以十进制格式显示它们的默认基数的整数。 此命令将打开和关闭全局设置,它会影响局部变量窗口、 监视窗口和调试器命令输出。 此命令相当于使用 .force_基数_输出 (使用基数范围内的整数) 命令。

    请注意   始终显示在默认数字基数命令不会影响长整数。 除非以十进制格式显示长整数 .enable_长_状态 (启用长整数的显示) 命令集。 .Enable_长_状态命令会影响显示在局部变量窗口中,监视窗口和调试器命令输出中; 没有为此命令在局部变量窗口中的菜单中没有等效项。

  • (仅限菜单)选定的值为打开内存窗口将打开新的停靠的内存窗口,显示所选表达式的地址处开始的内存。

  • (仅限菜单)调用所选的内存值的 dt运行 dt (显示类型) 命令与所选符号作为其参数。 调试器命令窗口中显示结果。 -N选项自动用于将符号与十六进制地址区分开来。 未不使用任何其他选项。 请注意,使用此菜单选项生成的内容是与运行时生成的内容相同dt命令从命令行中,但格式会略有不同。

  • (仅限菜单)工具栏工具栏,开启和关闭。

  • (仅限菜单)停靠取消停靠将使窗口进入或离开停靠的状态。

  • (仅限菜单)移到新停靠局部变量窗口将关闭,并将其打开新的平台中。

  • (仅限菜单)设置为选项卡形式停靠为窗口中,键入目标局部变量窗口不可用。 此选项才可用的源或内存窗口。

  • (仅限菜单)始终浮点将使窗口停靠,即使仍拖到停靠位置。

  • (仅限菜单)移动与帧将使窗口移动时移动的 WinDbg 帧,即使在窗口已解除固定。

  • (仅限菜单)帮助有关 Windows 调试工具文档中打开此主题。

  • (仅限菜单)关闭关闭此窗口。

其他说明

本地上下文确定哪些组的本地变量将显示在局部变量窗口。 当本地上下文的任何原因发生更改时,会自动更新局部变量窗口。 默认情况下,本地上下文与匹配程序计数器的当前位置。 也就是说当我们如果执行~0s切换线程或.cxr切换上下文等指令时,如果此时窗口打开,那么窗口内容将会改变。

Windbg Locals(局部变量)窗口的使用的更多相关文章

  1. Visual Studio 调试系列5 检查变量(使用自动窗口和局部变量窗口)

    系列目录     [已更新最新开发文章,点击查看详细] 在调试时,“自动变量”和“局部变量”窗口会显示变量值. 仅在调试会话期间,这两个窗口才可用. “自动变量”窗口显示当前断点周围使用的变量. “局 ...

  2. Windbg Watch(监视)窗口的使用

    在WinDbg中,可以使用“监视”窗口显示和更改全局和局部变量和寄存器信息. 您可以自定义此窗口以显示您正在跟踪的项..“监视”窗口可以显示所需的任何变量列表.这些变量可以包括来自任何函数的全局变量和 ...

  3. python中的作用域以及内置函数globals()-全局变量、locals()-局部变量

    在python中,函数会创建一个自己的作用域,也称为为命名空间.这意味着在函数内部访问某个变量时,函数会优先在自己的命名空间中寻找. 通过内置函数globals()返回的是python解释器能知道的变 ...

  4. Windbg Memory(内存)窗口的使用

    在 WinDbg 中,可以查看和编辑内存,通过输入命令或通过使用内存窗口. 内存窗口的打开 通过菜单View-->Memory 通过快捷键Alt+5 通过工具栏 使用内存窗口 通过上面方式打开的 ...

  5. Windbg Register(寄存器)窗口的使用

    寄存器是位于在 CPU 的小易失性内存单位. 许多寄存器专用于特定用途,并可用于用户模式应用程序使用的其他寄存器. 基于 x86 和基于 x64 的处理器在有可用的寄存器的不同集合. 如何打开寄存器窗 ...

  6. python的作用域、globals()-全局变量 和 locals()-局部变量

    在python中,函数会创建一个自己的作用域,也称为为命名空间.当我们在函数内部访问某个变量时,函数会优先在自己的命名空间中寻找. 我们自己定义的全局变量均在python内建的globals()函数中 ...

  7. WinDbg命令窗口的使用

    调试器命令窗口是windbg中的主要调试信息窗口.可以在此窗口中输入调试程序命令并查看命令输出.Windbg的命令窗口是我们进行调试时,主要打交道的窗口.界面如下 对于windbg,“调试器命令窗口” ...

  8. 认识WinDbg

    WinDbg学习笔记(一)--认识WinDbg 一.前言    本人学习WinDbg已经有好几天了,虽说技术掌握的还不太熟练,不过也总算是入门了在学习WinDbg的过程中,觉得WinDbg真的比Oll ...

  9. Windows调试神器:WinDBG

    Q:WinDBG的Watch窗口中我想要查看长字符串,但是后面的内容都被省略为...了怎么办? A:如图,双击你要查看的内容,出现光标后,移动光标即可查看后面被省略的内容 Q:WinDBG如何给程序设 ...

随机推荐

  1. 应用层内存溢出/越界/重复释放等问题检查工具(ASan)

    https://github.com/google/sanitizers/wiki https://github.com/google/sanitizers/wiki/AddressSanitizer ...

  2. 转:对softmax讲解比较清楚的博客

    https://blog.csdn.net/wgj99991111/article/details/83586508

  3. axios 源码分析(上) 使用方法

    axios是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它可以在浏览器和node环境下运行,在github上已经有六七万个星了,axios使用很方便,很多人在使用他,vu ...

  4. spring boot测试类自动注入service或dao

    使用Spring Boot进行单元测试时,发现使用@Autowired注解的类无法自动注入,当使用这个类的实例的时候,报出NullPointerException,即空指针异常. Spring Boo ...

  5. 一个简单的利用 WebClient 异步下载的示例(五)(完结篇)

    接着上一篇,我们继续来优化.我们的 SkyParallelWebClient 可否支持切换“同步下载模式”和“异步下载模式”呢,好处是大量的代码不用改,只需要调用 skyParallelWebClie ...

  6. sysstat工具包之mpstat

    mpstat 1 简介 mpstat是一个实时监控工具,主要报告与CPU相关统计信息,信息存放在/proc/stat文件中: 在多核心cpu系统中,不仅可以查看cpu平均信息,还可以查看指定cpu信息 ...

  7. Weblogic-SSRF漏洞复现

    Weblogic-SSRF漏洞复现 一.SSRF概念 服务端请求伪造(Server-Side Request Forgery),是一种有攻击者构造形成有服务端发起请求的一个安全漏洞.一般情况下,SSR ...

  8. 2019-11-29-WPF-禁用实时触摸

    原文:2019-11-29-WPF-禁用实时触摸 title author date CreateTime categories WPF 禁用实时触摸 lindexi 2019-11-29 10:20 ...

  9. [转载].NET ASP.NET 中web窗体(.aspx)利用ajax实现局部刷新

    之前开发的一套系统中用到了大量的 checkboxList 控件,但是每次选定之后都会刷新整个页面,用户体验很差,百度了之后查到这篇文章,尝试了一下可以实现,所以转载了过来,记录一下,也给其他有相同困 ...

  10. C#进阶之路(八)集合的应用

    集合是我们编程时候常用的类库,本文主要讨论具体每个类型的区别,每个集合对应的时间复杂度.先上一个时间复杂度图: C#集体类型( Collections in C#) 集合是.NET FCL(Frame ...