|
Программирование >> Перегруженные имена функций и идентификаторы
Initialization Сообщения, генерируемые при создании в приложении диалогового окна. Clipboard Сообщения, генерируемые при обращении пользователя к буферу Clipboard. Сообщения динамического обмена данными, генерируемые при обмене данными между приложениями Windows. Non-client Сообщения, генерируемые Windows для обслуживания неклиентной области окна приложения. Other Любые сообщения, не попадающие в предыдущие категории (например, сообщения MDI). Single Message Позволяет вам задать конкретное отслеживаемое сообщение. Чтобы регистрировать одно сообщение, выберите Single Message и введите в поле ввода Single Message Name имя сообщения или его номер. Если вы хотите регистрировать для конкретного окна несколько классов или сообщений, то: задайте конкретный класс или имя сообщения; выберите в SpeedMenu области классов сообщений команду Add; в определение отслеживаемых сообщений добавьте классы или имена сообщений. Задание действия по сообщению После спецификации окна и отслеживаемых сообщений нужно задать действие, выполняемое при поступлении сообщения. Turbo Debugger предусматривает в диалоговом окне Set Message Filter две кнопки Action: Break (приостановка выполнения программы) и Log (регистрация сообщения вы области регистрации окна Windows Messages). Break фактически означает установку точки останова по сообщения. Если вы регистрируете сообщения для нескольких окон, не регистрируйте все сообщения. Большое число передаваемых между Windows и Turbo Debugger сообщений может привести к краху системы. Отладка библиотек DLL Динамически компонуемая библиотека DLL - это библиотека подпрограмм и ресурсов, компонуемая с приложением Windows на этапе выполнения. Это позволяет подпрограммам использовать одну копию подпрограмм, ресурсов и драйверов устройств. Когда приложению требуется доступ к DLL, Windows проверяет, загружена ли DLL в память. Если это так, то вторая копия не загружается. DLL может загружаться программой в память двумя различными способами: при загрузке программы (DLL загружается при статической компоновке ее с программой с помощью утилиты IMPLIB); когда ваша программа обращается с вызовом LoadLibrary. Выполнение DLL по шагам При пошаговом выполнении функции DLL Turbo Debugger загружает идентификатор DLL, исходный код DLL в окно Windows и позиционирует курсор на вызываемую подпрограмму. Однако, перед загрузкой исходного кода в окно Module должны удовлетворяться следующие условия: DLL должна компилироваться с отладочной информацией. Файл .DLL должен находиться в том же каталоге, что и файл .EXE программы. Должен быть доступен исходный код DLL. Turbo Debugger ищет исходный код DLL также, как и исходный код программ. Если DLL не содержит отладочной информации, то отладчик не может найти исходный код DLL и открывает окно CPU. При отладке функции DLL и прохождении с помощью F7 или F8 оператора return ваша программа может начать работать, хотя вы нажали F9. Такое поведение типично при отладке DLL, вызванной из программы без отладочной информации, или когда DLL возвращает управление через функциональный вызов Windows. Если вы отлаживаете код запуска DLL, перед загрузкой DLL установите точку останова на первой строке программы. Это обеспечит приостановку программы при возврате и DLL. Доступ к DLL и исходному коду модулей Хотя Turbo Debugger обеспечивает прозрачное пошаговое выполнение функций DLL, вам может потребоваться доступ к DLL до того, как программа ее вызовет (например, в ней нужно установить точки останова или задать отслеживаемые выражения). Для доступа к выполняемому модулю, отличному от текущего загруженного, откройте с помощью команды View Modules (F3) диалоговое окно Load Module Source or DLL. Это диалоговое окно перечисляет все исходные модули, содержащиеся в текущем загруженном выполняемом файле. Блок списка DLL & Programs показывает все файлы .DLL и .EXE, загруженные Windows. (При работе с TDW в нем также выводятся все загруженные файлы .DRV и .FON.) Символом точки (.) отмечены DLL, которые могут загружаться в Turbo Debugger (а также DLL с отладочной информацией и исходным кодом). Звездочка (*) показывает, что модуль загружен отладчиком. Так как ваши программы могут загружать DLL с помощью вызова LoadLibrary, в блоке списка могут показываться не все DLL. Если вам нужен другой модуль исходного кода, подсветите нужный модуль в списке Source Module и используйте кнопку Load (или дважды щелкните на имени модуля мышью ). Turbo Debugger открывает окно Module и выводит исходный код данного модуля. Для доступа к выполняемому файлу, отличному от текущего, откройте диалоговое окно Load Module Source or DLL Symbols (F3), подсветите в блоке списка нужный файл и выберите командную кнопку Symbol Load. Turbo Debugger открывает окно Module с исходным кодом первого модуля выполняемого файла. Чтобы добавить DLL к списку, откройте указанное диалоговое окно, активизируйте поле ввода DLL Name и введите
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |