【问题标题】:How to read a .obj file?如何读取 .obj 文件?
【发布时间】:2017-08-03 07:18:11
【问题描述】:

在 Visual Studio 中,编译 c++ 文件后会生成一个目标文件 (.obj)。 如何阅读和理解它? 以及如何在 Visual Studio 2015 中查看编译器优化后的代码。 如果已经回答,请重定向。

【问题讨论】:

  • 也许this 有帮助
  • .obj 文件不适合人类阅读或理解。
  • @Walter 用于调试目的并了解编译器优化

标签: c++ windows visual-studio-2015 compiler-optimization


【解决方案1】:

使用 Visual Studio 命令提示符下的 DUMPBIN 工具。具体来说,/DISASM 选项显示了反汇编。请注意,如果您启用了链接时优化,那么至少理论上最终代码可能会在 .obj 文件链接形成最终二进制文件(.exe.dll)后发生变化。 DUMPBIN 也可以拆解。

【讨论】:

    【解决方案2】:

    您有点问错了问题:您说您想查看编译器优化,但随后得出的结论导致您认为您需要 .obj 文件。正如愤世嫉俗者的回答所显示的那样,这是可行的,但是根据情况,有一些替代方案可以更方便/更好:

    • 在调试器下运行代码,break,右键单击任意源文件,选择“Go To Disassembly”,即可查看源代码和内联汇编
    • 让编译器输出汇编代码(同样可选地包括源代码和机器代码):转到项目设置->编译器->输出文件并设置“汇编器输出”

    【讨论】:

      【解决方案3】:

      /all 设置中的 Dumpbin 显示代码段和目录。对代码段特征等内容的详细解释不是常识,但可以在某些书籍中找到。这是 COFF 上的 precis,这是更详细的 description,甚至还有 WYSINWYX thesis

      添加到@cynic 的answer,在 Visual Studio (15 & 17) 中可以通过菜单运行 DumpBin。 转到工具/外部工具,然后单击添加。 在标题框中放入类似 DumpBin Your_ExeYour_Obj 名称的内容,如果 DumpBin 不在环境设置中,请找到它的路径。 它可能类似于以下内容:

      c:\program files (x86)\microsoft visual studio\2017\community\VC\Tools\MSVC\SDK-Version\bin\Host $(Platform)\$(平台)\dumpbin.exe

      并将其添加到命令框。对于参数尝试类似:

      /ALL /OUT:C:\Users\New\Desktop\dumpofYour_ExeName.txt "您的 obj/可执行文件的路径名"

      是的,引号会起作用。

      如果使用桌面,也将其放入初始目录框中。 如果您希望将“参数”框留空,请选择“提示参数”。

      【讨论】:

        猜你喜欢
        • 2020-10-07
        • 2015-02-20
        • 2020-10-18
        • 2013-10-14
        • 1970-01-01
        • 1970-01-01
        • 2020-07-16
        • 1970-01-01
        • 2018-09-05
        相关资源
        最近更新 更多