Сегодня пришел коллега, чтобы спросить о
как включить функциональность "int 3"
64-битные платформы. Что такое "int 3"?
Это инструкция по сборке, которая
используется для создания точки останова. По крайней мере
это инструкция для x86
процессор, и как вы можете себе это представить
очень зависит от платформы.
На 64-битных платформах нет
встроенная сборка, так что ваш
"__asm int 3". Что делать сейчас? Что ж
есть менее известная конструкция, которая
на самом деле гораздо лучше использовать в этом
он работает на всех платформах (x64,
Itanium и x86), который
__debugbreak (). Это встроенный компилятор Visual C ++ (определенный в Visual
C ++ 2005 под vc \ include \ intrin.h,
с кучей других классных встроенных функций)
это будет эффективно действовать "Int 3"
на всех платформах.
DebugBreak, вызов функции Win32
все еще вокруг, но в целом с помощью
__debugbreak () - мое предпочтение, если по какой-либо другой причине, кроме
вызов функции (это компилятор
встроенный), и вам не нужно отлаживать
символы, чтобы получить читаемый стек вызовов.
Если вы пишете C ++, вы, вероятно,
не хочу писать непереносимо
сборка, и это только на один меньше
место, где вы должны были бы.