Система визуального объектно-ориентированного проектирования C++Builder 115

сведущих в системном программировании можно рекомендовать ограничиться со-
общениями о точках прерывания и сообщениями, генерируемыми функцией Out-
putDebugString. Об этой функции надо сказать особо. Это функция API Windows,
определенная следующим образом:

VOID OutputDebugString(LPCTSTR IpOutputString);

Ее параметр IpOutputString является указателем на строку текста с нулевым
индексом в конце.

Функция OutputDebugString в процессе отладки выдает сообщение, которое
вы можете наблюдать в окне протокола сообщений о событиях Event Log. Но если
отладчик отключен или если выполняемый модуль вашего приложения запускает-
ся непосредственно, а не из среды C++Builder, то функция OutputDebugString ни-
чего не делает. Таким образом, вы можете внести в разных местах своего приложе-
ния вызовы OutputDebugString с соответствующими сообщениями, которые пока-
жут вам ход выполнения приложения в режиме отладки. А когда вы или другие
пользователи впоследствии запустят приложение в обычном режиме, наличие в
нем вызовов ничем не помешает, кроме очень незначительных затрат времени и
незначительного увеличения объема модуля.

Можете опробовать этот инструмент в тестовом приложении, рассмотренном
ранее, вставив, например, в конце функции TForml::ButtonlClick оператор

OutputDebugString(("Окончание цикла: А = " + FloatToStr(А)).с str(j);

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

2.4.8.10 Другие средства отладки

В C++Builder имеется еще немало инструментария, позволяющего проводить
отладку на более детальном уровне. Это, прежде всего, окно CPU (команда View |
Debug Windows CPU), позволяющее отследить ход выполнения проекта на уровне
команд макроассемблера. Окно стека (команда View Debug Windows Call Stack) по-
зволяет определить последовательность вызванных функций, не только тех, кото-
рые вызываются явно вашим приложением, но и всех неявно вызываемых функ-
ций библиотек. Окно модулей (команда View Debug Windows ( Modules) показывает
список всех модулей, загруженных в память при выполнении вашего приложения.
Это окно (см. рис. 2.49) позволяет, в частности, если выделить на его левой верх-
ней панели имя вашего модуля .ехе, увидеть в левой нижней панели список испо-
льзованных заголовочных файлов. Двойной щелчок на строке соответствующего

Рис. 2.49

Окно загруженных
модулей