【问题标题】:How do I view the compiled machine code or byte code for a C++ function in Visual Studio 2010?如何在 Visual Studio 2010 中查看 C++ 函数的编译机器码或字节码?
【发布时间】:2011-11-03 08:35:10
【问题描述】:

查看编译器从我的文件生成的代码的最佳(最快)方法是什么?我主要使用 C++,但也欢迎使用适用于 .NET 语言的解决方案。

【问题讨论】:

  • 设置断点,按CTRL+F11

标签: c++ .net visual-studio-2010 visual-c++ .net-assembly


【解决方案1】:

在 Visual Studio 中,转到项目的属性页,然后转到 C/C++ → Output Files → Assembler Output。它应该看起来像这样:

注意相应的编译器开关,/FA 的所有变体。

  • /FA: 仅装配列表
  • /FAcs:汇编、机器代码和源代码
  • /FAc: 使用机器码组装
  • /FAs:使用源代码组装

在“汇编器输出”选项下方有一个“ASM 列表位置”选项。这相当于/Fa 开关(注意大写!),它设置输出列表的文件路径。

您还可以在调试时(在断点处)查看程序集,并通过右键单击源文件文本区域中的当前行并单击“转到反汇编”来完成相应的源代码。

它将跳转到您在单独选项卡中右键单击的行的程序集。列表将如下所示:

是的,我知道,屏幕截图不是来自 Visual Studio 2010,但步骤和总体外观是相同的。我只是无法立即访问 VS2010 来制作屏幕截图。 :-)

【讨论】:

  • 这个答案真棒。但是,我相信当您使用它执行汇编程序输出时,我相信它不会创建二进制文件。如果我没记错的话,你应该在某处注明。
  • @MooingDuck:这对于单独的预处理器运行 (/P) 是正确的,但至少在 VC2010 中,/FA 变体仍然会生成二进制文件。
【解决方案2】:

对于 C++ 项目,使用 /FA 编译以获取程序集列表。

对于 .NET 程序集,有 ildasm

【讨论】:

    【解决方案3】:

    对于.NET,您可以使用框架附带的ildasm 工具来查看IL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      相关资源
      最近更新 更多