How to read a .obj file?

前端 未结 3 1321
离开以前
离开以前 2021-01-13 16:59

In visual studio a object file (.obj) is generating after compiling a c++ file. How to read and understand it? Also how to see the code after compiler optimization in Visual

相关标签:
3条回答
  • 2021-01-13 17:12

    You're sort of asking the wrong question: you say you want to see compiler optimizations but then you draw conclusions leading you to think you .obj files are required for that. That works, as cynic's answer shows, but there are alternatives which can be handier/better depending on the situation:

    • run code under the debugger, break, right-click any source file, select 'Go To Disassembly' and you can view source and assembly inline
    • have the compiler output assembly code (again optionally including source and machine code): go to project settings->Compiler->Output Files and set 'Assembler Output'
    0 讨论(0)
  • 2021-01-13 17:24

    Use the DUMPBIN tool from Visual Studio command prompt. Specifically, the /DISASM option shows you the disassembly. Do note the if you have link-time optimization enabled, then at least theoretically the final code may change after the .obj files are linked to form the final binary (.exe or .dll). You can disassemble those with DUMPBIN as well.

    0 讨论(0)
  • 2021-01-13 17:30

    Dumpbin at the /all setting shows code sections & directories. Detailed explanations of things like code section characteristics is not common knowledge, but may be found in certain books. Here's a precis on COFF, here's a more detailed description, or there's even a WYSINWYX thesis.

    Adding to @cynic's answer, in Visual Studio (15 & 17) it's possible to run DumpBin via the menu. Go to Tools/External Tools and click Add. Put in the Title box something like DumpBin Your_Exe or Your_Obj name and find the path for DumpBin if it isn't in the environment settings. It can be similar to the following:

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

    and add it to the Command box. For arguments try something like:

    /ALL /OUT:C:\Users\New\Desktop\dumpofYour_ExeName.txt "Pathname to your obj/executable file"

    and yes, the quotes will work.

    If using the desktop, put that in the initial directory box as well. Select "prompt for arguments" if you wish to leave the Argument box blank.

    0 讨论(0)
提交回复
热议问题