Giffyguy
Giffyguy

Reputation: 21292

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

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 Release-Mode programs to break on breakpoints in VS 2002 (and display the raw disassembly as I stepped through it), but I can't remember how I got that to work. Does VS 2010 have any options that might allow this to happen?

Upvotes: 2

Views: 1430

Answers (4)

Mark Tolonen
Mark Tolonen

Reputation: 177665

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

Upvotes: 5

Olof Forshell
Olof Forshell

Reputation: 3264

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.

Upvotes: 0

kichik
kichik

Reputation: 34704

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.

Upvotes: 0

zr.
zr.

Reputation: 7788

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.

Upvotes: 5

Related Questions