Каков наилучший способ просмотра точной разборки в VС++ 2010 в режиме Win32 Release?

Я пишу оптимизированный код на уровне сборки, и мне нужно убедиться, что компилятор С++ корректно работает с ним в Release-Mode.

Раньше я мог использовать программы Release-Mode для разрыва на контрольных точках в VS 2002 (и отображать сырую разборку, когда я проходил через нее), но я не помню, как я получил это для работы. Есть ли у VS 2010 какие-либо опции, которые могли бы позволить это произойти?

Ответ 1

Скомпилируйте с /Zi и свяжите с /DEBUG, и вы сможете установить точки останова.

В диалоговом окне свойств проекта:

  • /Zi можно включить в C++ → Общие → Формат отладочной информации

  • /DEBUG можно включить в Linker → Debugging → Generate Debug Info

Ответ 2

Если вы хотите использовать отладчик для просмотра разборки, вы можете поместить внутренний вызов __debugbreak() прямо перед кодом, который вы хотите просмотреть.

Ответ 3

Если вы пишете прямую сборку, вы можете просто использовать INT 3. Когда вы устанавливаете точку останова с помощью отладчика, она фактически изменяет код на это (0xCC в двоичном формате), поэтому отладчик будет вызван при его выполнении.

Вы также можете вызвать одну из функций, которые делают для вас, как предлагается zr. Windows one DbgBreakPoint(). Если вы его разобьете, вы можете легко увидеть это только как INT 3.

Ответ 4

Это были методы создания ловушек:

_asm
{
  int 3
}

или

_asm
{
  _emit 0xcc
}

или он был

_emit 0xcc

Я не уверен в синтаксисе (это было время), но, надеюсь, что-то можно сделать из него.