Отладка приложений


Условии или в данных. Если же - часть 3


Рис. 5.4. Список описателей точек прерывания программы AdvancedBP с флажками активизации/деактивизации ТП

Хотя имеется четыре отладочных регистра, в этой программе только две глобальных точки прерывания, работающих одновременно. Если установить группу глобальных точек прерывания, то можно гарантировать, что отладчик будет выполнять программу в пошаговом режиме.

Точки прерывания глобальных переменных — превосходное средство для поиска наиболее сложных видов ошибок, связанных с неконтролируемой записью в память (wild writes). Как указывалось в главе 2, это происходит, когда при записи в память используется неинициализированный  указатель, что вызывает непредсказуемую модификацию данных в памяти.

 Чтобы открыть эту панель, нужно установить на подходящем исходном операторе простую позиционную точку прерывания и, не изменяя позиции курсора ввода, ввести команду Edit|Breakpoints, Затем в открывшемся диалоговом окне Breakpoints ввести в поле Break at вкладки Location номер строки (после символа "точка"), в которой установлена данная точка прерывания (например, .47), и нажать кнопку Condition (под полем Break at). — Пер.

 Если же ввести в поле Enter the expression to be evaluated сам указатель pMyData (без звездочки), то прерывание произойдет, когда изменится сам указатель, указывающий на другую область памяти. — Пер.

 Проблема обнаруживается только при аварийном завершении программы или искажении некоторых данных. Если проблема повторяется, т. е. хотя бы изредка искажается значение одной и той же переменной, установите на ней точку прерывания данного типа (т. е. ТП глобальной переменной), чтобы появилась возможность каждый раз узнавать о записи в эту область. Только подготовьтесь к тому, что прежде чем вы наткнетесь на первую случайную запись, точка прерывания много раз попадет на правильные (не случайные) записи в область этой переменной.

 




Начало  Назад  Вперед



Книжный магазин