What's the best way to view accurate disassembly in VC++ 2010 while in Win32 Release mode?

后端 未结 4 1480
予麋鹿
予麋鹿 2021-01-16 03:42

I am writing assembly-level optimized code, and I need to make sure that the C++ compiler is working with it correctly in Release-Mode.

I used to be able to get Rele

相关标签:
4条回答
  • 2021-01-16 04:23

    If you want to use the debugger to view the disassembly, you can place a __debugbreak() intrinsic call right before the code which you want to view.

    0 讨论(0)
  • 2021-01-16 04:34

    If you're writing straight assembly, you can just use INT 3. When you place a breakpoint using the debugger, it actually changes the code to that (0xCC in binary) so the debugger will get called when it's executed.

    You can also call one of the functions that do that for you like zr suggested. The Windows one is DbgBreakPoint(). If you disassemble it, you could easily see it's nothing but INT 3.

    0 讨论(0)
  • 2021-01-16 04:35

    Compile with /Zi and link with /DEBUG and you'll be able to set breakpoints.

    Under a project's Properties dialog:

    • /Zi can be enabled in C++ --> General --> Debug Information Format

    • /DEBUG can be enabled in Linker --> Debugging --> Generate Debug Info

    0 讨论(0)
  • 2021-01-16 04:42

    These used to be methods of causing breakponts:

    _asm
    {
      int 3
    }
    

    or

    _asm
    {
      _emit 0xcc
    }
    

    or was it

    _emit 0xcc
    

    I'm not sure of the syntax (it's been a while) but hopefully something can be made of it.

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