Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Как поставить програмную точку останова

#отладка #любой_язык #faq


Как поставить програмную точку останова в разных языках средах и IDE. Часто вижу
вопросы не могу отладить программу потому что программа большая, обьёмы большие. Цикл
на 10000000. Такие ситуации можно отловить, например, при возникновении ошибки у меня
i=357489, а не понятно почему возникло исключение, тогда делаем, напимер так:

 for (i=0;i<10000000;i++) {
   if (i==357489) DebugBreak();
   // код
   }


Но DebugBreak - функция windows. Как можно поставить точки останова в других средах?
    


Ответы

Ответ 1



В с с++ есть такие варианты поставить точку останова DebugBreak(); - среда windows __builtin_trap() - среда linux raise(SIGTRAP) - работа с сигналами POSIX posix __EMIT__(0xCC) или __emit__(0xcc); - некоторые среды поддерживают вставку кода __asm { int 3;} или __asm { db 0xCC;} ассемблерная вставка Для других сред с# System.Diagnostics.Debugger.Break(); javascript debugger; java try {throw new TurnOnDebuggerException();}catch(TurnOnDebugger td) {/*Nothing*/ } pascal inline($CC); vbscript visual-basic stop

Комментариев нет:

Отправить комментарий