Какой лучший способ просмотра точной разборки в VC ++ 2010 в режиме Win32 Release? - PullRequest
1 голос
/ 20 февраля 2011

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

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

Ответы [ 4 ]

4 голосов
/ 20 февраля 2011

Создайте символы для своей сборки выпуска (/ Zi) [edit: и создайте ссылку с / DEBUG], и вы сможете установить точки останова.

2 голосов
/ 20 февраля 2011

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

0 голосов
/ 21 февраля 2011

Раньше это были методы вызывания прерываний:

_asm
{
  int 3
}

или

_asm
{
  _emit 0xcc
}

или

_emit 0xcc

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

0 голосов
/ 20 февраля 2011

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

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

...