Шаг 293.
Среда программирования Visual C++.
Отладка приложения STUpload. Установка точек прерывания
На этом шаге мы рассмотрим установку точек прерывания.
На этом шаге мы научимся устанавливать точки прерывания в файлах с исходным кодом. Обычно точки прерывания
задают до запуска отладчика, однако, как Вы увидите, можно их помечать и удалять в любой момент, даже при работающем отладчике.
- Прерывание программы в момент импортирования файла.
- Откройте файл STUploadDoc.cpp и найдите в нем функцию CSTUploadDoc::LoadData():
BOOL CSTUploadDoc::LoadData(CStdioFile &infile)
- Найдите в функцию LoadData() цикл while, считывающий строки DAT-файла:
while (infile.ReadString(strTemp))
{
BOOL bValidDate =FALSE;
CString strFund;
CString strDate;
. . . . .
Рис.1. Цикл while
- Щелкните инструкцию while, чтобы установить на нее точку прерывания.
- Нажмите клавишу F9, таким образом установив точку прерывания. Рядом со строкой появится красный кружок.
- Щелкните кнопку Go в панели инструментов отладчика или нажмите клавишу F5. Приложение
STUpload продолжит свою работу, закончив выполнение функции CMainFrame::OnCreate(). Появится
главное окно программы STUpload. В данный момент активно приложение, а не отладчик, который
активизируется только при срабатывании точки прерывания.
- В меню Data выберите пункт Import и откройте файл Ch12Test.dat. При этом программа
остановит работу на точке прерывания в функции CSTUploadDoc::LoadData().
- Щелкните правой кнопкой указанную ниже строку и выберите в контекстном меню Remove Breakpoint либо
Disable Breakpoint. Первая команда удаляет точку прерывания, а вторая - просто отключает ее, не удаляя.
- Выполните несколько команд. Обратите внимание на изменение переменных (например, StrDate) в окне Variables.
- Установка точки прерывания, связанной с данными.
- В меню Edit выберите пункт Breakpoints или нажмите сочетание клавиш CTRL+B, чтобы
вызвать диалоговое окно Breakpoints.
- На вкладке Data в поле Enter the expression to be evaluated введите bFirstLine. Так Вы
установите точку прерывания, срабатывающую при изменении значения переменной bFirstLine.
Рис.2. Установка точки прерывания
- Закройте диалоговое окно Breakpoints, щелкнув кнопку ОК.
- Щелкните кнопку Go, чтобы продолжить выполнение программы.
Скорее всего при выполнении цикла while возникнет короткая пауза, так как использование точек прерывания,
связанных с данными, требует дополнительных ресурсов. Тем не менее программа остановится, и появится окно с
сообщением, что обнаружено изменение переменной bFirstLine.
Рис.3. Окно с сообщением изменения переменной bFirstLine
Щелкнув кнопку ОК в этом окне, Вы увидите окно с исходным кодом, где инструкцию, следующую за изменившей
флаг bFirstLine, указывает желтая стрелка.
Установка точек прерывания, связанных с данными, не очень полезна для простых переменных, меняющих свое значение только один раз.
Но они бесценны для обнаружения скрытых ошибок, при которых неизвестно, где именно переменная модифицируется неправильно.
- Продолжение выполнения программы и завершение работы.
- Нажмите клавиши CTRL+B снова и в появившемся диалоговом окне Breakpoints щелкните кнопку
Remove All. Таким образом Вы удалите точку прерывания, связанную с переменной bFirstLine, и программа
будет работать с нормальной скоростью.
- Щелкните кнопку Go или нажмите клавишу F5, чтобы продолжить программу, и закройте ее
командой Exit. В момент завершения программы свою работу завершит и отладчик.
Со следующего шага мы начнем рассматривать вопросы, связанные с распространением приложений.
Предыдущий шаг
Содержание
Следующий шаг