Visual Studio调试器指南---Register窗口

Posted yilang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio调试器指南---Register窗口相关的知识,希望对你有一定的参考价值。

寄存器是处理器(CPU)中的特殊区域,用于存储处理器需要当前处理的少量数据。 编译或解释源代码时会生成一些指令,这些指令根据需要将数据从内存移动到寄存器或反之。 相对于访问内存数据,访问寄存器数据非常快。那些允许处理器将数据保留在寄存器并多次访问的代码,比起那些需要处理器不断加载和卸载寄存器的代码执行速度快得多。 为了方便编译器将数据保存在寄存器中并实现其他优化,应避免使用全局变量而尽可能地依靠局部变量。 称以此方式编写的代码具有良好的引用局部性。 在某些语言中,如 C/C++ 中,程序员可以声明寄存器变量,它告诉编译器在所有时间尽可能地将该变量保留在寄存器中。

寄存器可分为两类:通用寄存器和专用寄存器。 通用寄存器保存用于一般操作(如将两数相加或引用数组中的元素)的数据。 专用寄存器具有特定用途和专门的意义。 堆栈指针寄存器是一个好例子,处理器利用它跟踪程序的调用堆栈。 程序员可能不会直接处理堆栈指针,但它对于程序正确运行至关重要。 没有堆栈指针,处理器在函数调用完成后将不知道返回何处。

大多数通用寄存器只保存一个数据元素。 例如单个整数、浮点数或某一数组元素。 一些新的处理器具有较大的寄存器,称为向量寄存器,可以保存一个小的数组。 由于它们可以保存较多数据,向量寄存器对于涉及数组的运算处理得非常快。 向量寄存器最初是用在昂贵的、高性能超级计算机上,但现在也用于微处理器,它们在密集的图形操作中具有很大优势。一个处理器通常有两组通用寄存器,一组针对浮点运算进行优化,一组针对整数运算进行优化。 因此,它们被称为浮点寄存器和整数寄存器。托管代码在运行时被编译为用来访问微处理器的物理寄存器的本机代码。 对于公共语言运行时或本机代码,“寄存器”窗口可以显示这些物理寄存器信息。 而对于脚本或 SQL 应用程序,“寄存器”窗口不会显示寄存器信息,因为脚本或 SQL 都是不支持寄存器概念的语言

通过“寄存器”窗口不仅可以看到寄存器的内容,还可以完成更多任务。 当本机代码处于中断模式时,可以单击寄存器内容并更改其值。 这不是可以随意做的事。 除非理解正在编辑的寄存器和它所包含的内容,草率编辑很可能导致程序崩溃或其他不良后果。

打开窗口

  • 通过菜单栏
    技术图片
  • 快捷键
    Alt+5

窗口的使用

技术图片

查看寄存器值

在调试期间,窗口显示寄存器内容。为了减少混乱,“寄存器”窗口将寄存器组织成组,具体情况随平台和处理器类型的不同而不同。默认显示通用寄存器组。 您可以显示或隐藏寄存器组。在窗口区域右键单击弹出如下菜单

技术图片

 

大家根据自己的需要在上面菜单里勾选相应的菜单就显示相应的寄存器组,去掉勾选就隐藏。

单步执行时,特别是在汇编模式下,我们可以看到被修改的寄存器值会变红。

编辑寄存器值

  1. 在“寄存器”窗口中,使用 Tab 或鼠标可以将插入点移到要更改的值的位置。 在开始键入之前,光标必须位于要覆盖的值之前。

  2. 键入新值。

技术图片

 

以上是关于Visual Studio调试器指南---Register窗口的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio调试器指南---Locals窗口

Visual Studio调试器指南----Autos窗口

Visual Studio调试器指南---Threads窗口

Visual Studio调试器指南---Threads窗口

Visual Studio调试器指南---Immediate窗口

Visual Studio调试器指南---多线程应用程序调试