866 Часть V. Инструментарий программиста

Команда Stop! также прекращает перехват сообщений. Кроме этого, по этой команде WinSight прекращает обновлять информацию в окнах в реальном времени. В этом случае WinSight терпеливо ждет команды Start! из меню; до тех пор информация на экране не будет обновлена.

Совет

1 Команды Start! и Stop! в меню WinSight— это, в сущности, один и тот же пункт меню. Выбор Start! изменяет этот пункт меню на Stop! Выбор Stop! во время сеанса трассировки сообщений меняет пункт меню обратно на Start!

Использование WinSpector

Приложение WinSpector (Winspctr.exe) и его утилиты позволяют произвести "посмертное" исследование информации, оставшейся после завершения приложения, вызвавшего неисправимую ошибку приложения (UAE) или общую ошибку защиты (General Protection Exception, GPE). Ситуации UAE и GPE происходят, когда приложение пытается выполнить некорректную операцию (рис. 30. II): например, когда происходит обращение к области памяти, используемой иным приложением или другой частью данного приложения. Приведенная программа вызывает ошибку, которую WinSpector может "срисовать":

#include <string.h>

void main() {

char *tempchar;

strcpy (tempchar, "Это приведет к GPE!");

h08661.jpg

Рис. 30.11

При общей ошибке защиты (GPE) Windows выдает характерное окно диалога

В данном примере переменная tempchar-определена как указатель на переменную символьного типа, но память под нее нигде в программе не отво-