Как сломать в функции в PostMessage / PostThreadMessage при отладке моего двоичного файла режима выпуска? - PullRequest
0 голосов
/ 11 июля 2011

Мое приложение закрывается сразу после запуска. Это происходит только при сборке в режиме Release. Я символизировал мой бинарный режим выпуска. Я подозреваю, что какой-то вторичный поток публикует WM_QUIT в нашей очереди. Я пытаюсь сломать функцию PostThreadMessage с условным сообщением == 0x0012 (WM_QUIT). Это не ударит. Просто чтобы убедиться, что я использовал break в функции в PostMessage и SendMessage. Неудачно. Может кто-нибудь указать, если я что-то здесь упускаю Как включить функцию Break at в случае двоичных файлов режима выпуска для API-интерфейсов WIN32?

С уважением, Субраманец

Ответы [ 2 ]

0 голосов
/ 11 июля 2011

Чтобы установить точку останова, используйте DebugBreak API, что приведет к сбою программы.Теперь нажмите «Отладка» (в зависимости от вашей ОС).Он доставит вас в DebugBreak место.Также возможно отладить сборку релиза с помощью IDE.

Но в вашем коде есть некоторая логическая проблема, а не просто точка останова.

0 голосов
/ 11 июля 2011

Это часто происходит с отсутствующим break в вашем переключателе / ​​регистре, что приводит к попаданию кода в обработчик WM_QUIT. Первый шаг, который я предприму, чтобы это исправить, - добавить код в ваш обработчик WM_QUIT, который выводит uMsg. Это скажет вам, действительно ли был отправлен WM_QUIT или это просто проваливающийся код.

В двоичных файлах Release возможна точка останова, но источник не будет хорошо соответствовать действительному двоичному файлу, поэтому пошаговые и другие функции отладки становятся гораздо менее полезными.

С точки зрения установки точки останова установите ее на {,,user32.dll}_SendMessageA@16 или {,,user32.dll}_SendMessageW@16 в зависимости от того, используете ли вы Юникод или нет. Однако, вероятно, это не будет очень полезно для вас.

...