VS2008 присоединяет отладчик (C ++) для обработки assert (...) - PullRequest
0 голосов
/ 10 февраля 2010

Есть два сценария, которые мне интересно улучшить в моем утверждении. 1) приложение отладочной сборки запускается регулярно, если есть подтверждение, я получаю диалоговое окно «Отладка сбоя подтверждения» с «Отмена», «Повторить», «Игнорировать». Отменить и игнорировать ответы работают нормально. Проблема с Retry. Если я нажму «Повторить», я получаю бесполезную «Ошибка приложения, достигнута точка останова», «ОК» - для завершения, «Отмена» - для отладки программы.

Можно ли избежать этого диалога и перейти непосредственно к диалоговому окну «Отладчик вовремя», в котором показаны варианты для отладчиков? Я понимаю, что диалоговое окно «Ошибка приложения» вызывается с помощью __debugbreak() или _asm int 3 в Intel, поэтому после нажатия «Повторить» мне нужно подключить отладчик без использования _asm int 3. Возможно ли это? Я не смог найти WinAPI, который делает это

2) В отладчике VS запускается приложение отладочной сборки (с использованием F5). Если активировано утверждение, я не хочу видеть никакого диалога, я хочу, чтобы он остановился прямо на утверждении. Мне удалось установить обработчики ошибок CRT, и если IsDebuggerPresent, то я __debugbreak (), и он останавливается на линии утверждения. Он отлично работает при отладке сборок Windows Mobile, но у меня все еще появляется диалоговое окно для сборок Win32: «APP.exe вызвал точку останова», «Разрыв», «Продолжить» и выделен серым «Игнорировать». Есть ли способ полностью отключить его?

1 Ответ

2 голосов
/ 11 февраля 2010

Посмотрите на запись реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug.

Я думаю, что если вы установите Авто на 1, то отладчик будет автоматически запущен.

И, конечно, изменение реализации assert также может помочь вам (взгляните на SuperAssert Джона Роббинса из его знаменитой книги «Отладка приложений Windows»).

...