鸿 网 互 联 www.68idc.cn

Visual Studio的反汇编窗口

来源:互联网 作者:佚名 时间:2015-08-13 07:37
一、使用“反 汇编 ” 窗口 “反 汇编 ” 窗口 显示与编译器创建的指令对应的 汇编 代码。如果正在调试托管代码,则这些程序集指令对应于由 JIT 编译器创建的本机代码,而不是由 Visual Studio 编译器生成的中间语言。 注意 此项功能不适用于 SQL 调试。 显

一、使用“反汇编窗口

      “反汇编窗口显示与编译器创建的指令对应的汇编代码。如果正在调试托管代码,则这些程序集指令对应于由 JIT 编译器创建的本机代码,而不是由 Visual Studio 编译器生成的中间语言。

注意   此项功能不适用于 SQL 调试。

显示“反汇编窗口

  • 从“调试”菜单中选择“窗口”并单击“反汇编”。(调试器必须正在运行或处于中断模式。)

除程序集指令外,还可显示如下可选信息:

  • 每条指令所在的内存地址(对于本机应用程序,这是实际的内存地址。对于 Visual Basic、C# 或托管代码,这是距离函数开头的偏移量。)
  • 程序集代码派生自的源代码
  • 代码字节(实际计算机或 IL 指令的字节表示形式)
  • 内存地址的符号名
  • 与源代码对应的行号

打开或关闭可选信息

  • 右击“反汇编窗口并设置或清除快捷菜单中的所需选项。

图 反汇编窗口

 

左边距中的黄色箭头表示当前执行点的位置。对于本机代码,这对应于 CPU 的程序计数器。该位置显示程序中将要执行的下一条指令。

 

二、调试基础知识:“反汇编窗口

      “反汇编窗口显示由源代码所创建的基本指令。当然不是要去读二进制或十六进制机器指令,指令被反汇编汇编语言格式。(反汇编这个术语来自一个称做反汇编器的程序员工具。汇编器是一个程序,它读入汇编语言代码并将其汇编为可执行的机器指令。反汇编器恰好相反,读入机器代码并将其转化为汇编语言格式。反汇编器有各种用途,如将源代码丢失的程序转换为人工可读的汇编语言程序。)

     汇编语言代码由助记符(指令名称的缩写)和代表变量、寄存器以及常量的符号所组成。每一条机器语言指令由一个汇编语言助记符代表,通常其后还跟有一个或多个变量、寄存器或常量。

      “反汇编窗口可用于托管或非托管代码。但对于脚本或 SQL 调试是不可用的。

      如果你不会读汇编语言而又想很好地利用“反汇编窗口,请参考有关汇编语言编程的较好的书。要学会汇编语言编程需要很大决心,但汇编语言也并非某些人想象的那样糟糕。但这超出了我们的讨论范围。

      汇编语言代码严重依赖处理器的寄存器(对托管代码而言,依赖公共语言运行库寄存器),同时使用“反汇编窗口和“寄存器”窗口(利用它可看到寄存器内容)将很有好处。有关更多信息,请参见调试基础知识:“寄存器”窗口

您很可能愿意使用汇编语言,而从来不会愿意或需要查看原始的、数字形式的机器代码指令。不过,如果愿意的话,可以利用“内存”窗口或从“反汇编窗口的快捷菜单中选取“代码字节”来查看。

 

参考博客

http://technet.microsoft.com/zh-cn/library/aa290887

网友评论
<