在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. Codechef September Challenge 2019 Division 2

    Preface 这确实应该是我打过的比较水的CC了(其实就打过两场) 但由于我太弱了打的都是Div2,所以会认为上一场更简单,其实上一场Div的数据结构是真的毒 好了废话不多说快速地讲一下 A Eas ...

  2. LOJ6029 [雅礼集训2017]市场

    看到区间整除操作,直觉是不会除太多次就变成全 \(1\). 然而现在还有加操作. 我也不知道为什么,当一个节点的 \(\lfloor\frac{mx}{d}\rfloor=\lfloor\frac{m ...

  3. HMM AND CRF

    Structured Learning 4: Sequence Labeling:https://www.youtube.com/watch?v=o9FPSqobMys HMM crf 李宏毅老师讲的 ...

  4. 一文教您如何通过 Docker 搭建反向代理 Ngnix,并配置 Https SSL 证书

    欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注附送 100G 海量学习资源哟!! 个人网站: https://www.exception.site/docker/h ...

  5. FreeMarker实现网页静态化

    1.FreeMarker实现网页静态化. FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运行时,它并不知道Servl ...

  6. error: open(".vs/ConsoleApp349/v16/Server/sqlite3/db.lock"): Permission denied error: unable to index file

    第一种1.git add --ignore-errors . 特别注意 git add --ignore-errors . errors后面有一个空格再加一个点' .' 第二种: 1.touch .g ...

  7. WPF-自定义实现步骤条控件

    步骤条实现的效果: 步骤条控件是在listbox的基础上实现的. 一. xaml代码: <Window.Resources> <convert1:StepListBarWidthCo ...

  8. git和小乌龟在windows下安装

    一:所需软件 (1):git 下载地址:https://git-scm.com/download (2):TortoiseGit 下载地址:https://tortoisegit.org/downlo ...

  9. HTTP Protocol

    HTTP协议 1      HTTP请求状态码 当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码.状态 ...

  10. 不了解MES系统中的看板管理?看完本文就懂了

    如果想要在生产车间中,让生产过程管理都处在“看得见”的状态,那么看板可视化管理的导入是你的不二选择. MES看板包括四个部分:生产任务看板.各生产单位生产情况看板.质量看板和物料看板,其中生产任务看板 ...