adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
Формат вывода списка модулей Windows (Таблица 17.7)
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
іПример вывода списка модулей і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і0985 TASK TDW C:\TD\TDW.EXE і
і0E2D DLL WINDEBUG C:\WIN3\WINDEBUG.DLL і
і0EFD TASK GENERIC C:\TD\GENERIC.EXE і
ГДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
іПоле і Описание і
ГДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і0EFD іЛогический номер сегмента памяти, выраженныйі
і і4-значным шестнадцатиричным значением. і
і і і
іTASK іТип модуля. Модуль может быть либо задачей, і
і ілибо DLL. і
і і і
іGENERIC іИмя модуля. і
і і і
іC:\TD\GENERIC.EXE іМаршрут к выполняемому файлу модуля. і
АДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Отладка динамически компонуемых библиотек (DLL)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
DLL представляет собой библиотеку подпрограмм и ресурсов
Windows, компонуемых с вашей прикладной программой во время вы-
полнения, а не компиляции. Такая компоновка во время выполнения
позволяет нескольким прикладным программам разделять одну копию
подпрограмм, данных или драйверов устройств, экономя тем самым
память. При запуске прикладной программы, использующей DLL, в
случае, если DLL еще не загружена в память, Windows загружает ее
таким образом, чтобы программе стали доступны ее точки входа.
При загрузке в TDW прикладной программы, с которой компону-
ются DLL, TDW определяет, какие из этих библиотек DLL (если они
используются) имеют таблицы имен идентификаторов (были скомпили-
рованы с параметром включения отладочной информации) и трассирует
для вас эти библиотеки. Если во время выполнения прикладной прог-
раммы TDW встречает вызов точки входа одной из этих DLL, то TDW
загружает таблицу имен идентификаторов и исходный код этой библи-
отеки и устанавливает маркер строки модуля в начало подпрограммы
DLL, вызываемой прикладной программой. Затем DLL становится в ок-
не Module, так же как и коды вашей прикладной программы.
Примечание: Отладчик TDW может загрузить DLL, не имею-
щую таблицы имен идентификаторов, но только в окно CPU и
только при отладке именно в окне CPU.
При выходе из подпрограммы DLL TDW перезагружает таблицу
имен идентификаторов и исходный код вашей программы и устанавли-
вает маркер строки на следующий оператор после вызова точки входа
DLL.
TDeb 3.0 #3-3 = 34 =
Если вы выполняете трассировку программы с помощью клавиш F7
и F8, для TDW может оказаться невозможным возврат в вызывающую
программы из подпрограммы, поскольку DLL может возвращать управ-
ление через вызов функции Windows. В этом случае ваша программа
просто выполняется так, как если бы вы нажали клавишу F9. Такое
проведение является общим для кода начальной загрузки библиотеки
DLL. Чтобы принудительно вернуться в прикладную программу перед
началом трассировки прикладной программы до вызова DLL установите
в вашей прикладной программе точку останова на строке после обра-
щения к DLL. При отладке кода начальной загрузки DLL (кода иници-
ализации) установите точку останова на первой строке прикладной
программы.
Поскольку отладка DLL в TDW значительно автоматизирована,
вам не нужно задавать, какую DLL нужно загрузить. Однако, вам мо-
жет понадобиться выполнить и другие задачи, например:
- Добавить DLL в список DLL;
- Установить точки останова, прерывания, слежения и т.д. в
DLL;
- Задать, какие DLL TDW не должен загружать;
- Отладить начальный код загрузки DLL.
Для выполнения любой из этих задач вы должны войти в окно
диалога Load Modules or DLLs ("Загрузка модулей или DLL") при по-
мощи команды ViewіModules (ОбзоріМодули). (Это диалоговое окно
также выводится при нажатии клавиши F3).
TDeb 3.0 #3-3 = 35 =
Й[*]ННННННННННLoad modules or DDL symbolsНННННННННННННННННН»
є є
є Source modules DDLs & Programs є
є ±demo±±±±±±±±±±± Load ±SCRNFUNC.DDL*±± Symbol load є
є ±±±±±±±±±±±±±±±± ±DEMO.EXE*±±±±±± °°°°°°°°°°° є
є ±±±±±±±±±±±±±±±± Cancel ±WINDEBUG.DDL±±± Load symbols є
є ±±±±±±±±±±±±±±±± ±WREMOTE.EXE±±±± ( ) No є
є ±±±±±±±±±±±±±±±± Help ±NWPOPUP.EXE±±±± (*) Yes є
є ±±±±±±±±±±±±±±±± °°°°° ±PROGRAM.EXE±±±± є
є ±±±±±±±±±±±±±±±± ±USER.EXE±±±±±±± Debug startupє
є ±±±±±±±±±±±±±±±± ±GDI.EXE±±±±±±±± ( ) No є
є ±±±±±±±±±±±±±±±± ±KRNL386.EXE±±±± (*) Yes є
є ±±±±±±±±±±±±±±±± ±±±±±±±±±±±±±±±± є
є ±±±±±±±±±±±±±±±± є
є ±±±±±±±±±±±±±±±± DDL name є
є ±±±±±±±±±±±±±±±± ±±±±±±±±±±±±±±±± Add DDL є
є ±±±±±±±±±±±±±±±± ±±±±±±±±±±±±±±±± °°°°°°°°°°° є
є є
ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј
Рис. 17.7 Диалоговое окно Load modules or DDLs
Load modules or DDL symbols - загрузка модулей или идентифи-
каторов DDL; Source modules - исходные модули; DDLs & Programs -
библиотеки DDL и программы; Load - загрузка; Symbol load - заг-
рузка идентификаторов; Cancel - отмена; Help - справка; Debug
startup - отладка кода инициализации; Add DDL - добавить DDL; DDL
name - имя библиотеки DDL.
Использование диалогового окна Load Modules or DLLs
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Это диалоговое окно позволяет:
- Перейти к другому исходному модулю вашей прикладной прог-
раммы;
- Выполнить операции (такие, как загрузка файла имен иденти-
фикаторов и исходного файла) с DLL и файлами .EXE.
TDeb 3.0 #3-3 = 36 =
Переход к другому исходному модулю
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Если вы отлаживаете прикладную программу, состоящую из нес-
кольких исходных модулей, скомпонованных в один файл .EXE, и вам
нужен доступ к модулю программы, отличному от текущего загружен-
ного в окно Module, вы можете вызвать окно Load Modules or DLLs
(Загрузка модулей или DDL) и выбрать один из модулей в левом
списке, который называется Source Modules (Исходные модули). В
этом списке перечислены все модули, скомпонованные в вашей прик-
ладной программе.
Для того, чтобы выбрать модуль, выделите его, нажмите клави-
шу Enter или дважды нажмите кнопку "мыши", либо выберите окно
Load (Загрузка). Отладчик TDW выведет на дисплей окно Module (Мо-
дуль), и в нем будет находиться новый исходный модуль.
Работа с DLL и программами
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
При отладке прикладной программы, с которой связана одна или
более DLL (это верно для любых прикладных программ для Windows),
и вы вызвали окно диалога Load Modules or DLLs (Загрузка модулей
или DDL), вы увидите там список DLLs & Programs (DLL и програм-
мы), в котором перечислены DLL и файлы .EXE. Этот список включает
в себя все DLL и файлы .EXE, загруженные Windows в текущий мо-
мент, а также все библиотеки DLL, запускаемые при запуске прик-
ладной программы. Он не включает DLL, которые ваша прикладная
программа запускает вызовом LOADLIBRARY, если только они уже не
загружены программой или Windows.
Элементы в верхней части списка, помеченные справа многото-
чием, это файлы .EXE вашей прикладной программы и DLL с таблицами
имен идентификаторов, вызываемые вашей прикладной программой. Ес-
ли вы не не делали изменений, отладчик TDW автоматически загружа-
ет таблицу имен идентификаторов и исходный код для каждой поме-
ченной DLL, всякий раз при вызове этой DLL из вашей программы.
Кроме того, TDW автоматически загружает таблицу имен идентифика-
торов и исходный код любой библиотеки DLL, которую ваша программа
запускает вызовом LOADLIBRARY, даже хотя сначала эта DLL может и
не присутствовать в списке. (Она там появится после загрузки ее
TDW).
"Кнопки" справа от списка позволяют выполнять операции с вы-
деленными вами DLL или прикладными программами. Окно текстового
ввода под списком позволяет добавить в список DLL. Вы можете ис-
пользовать эти средства следующим образом:
TDeb 3.0 #3-3 = 37 =
Управляющие "кнопки"окна диалога DLLs & Programs Таблица 17.5
ЪДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Кнопка і Описание і
ГДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Symbol load і Загружает таблицу имен идентификаторов и і
і і исходные файлы для DLL или прикладной і
і і программы. Эта команда изменяет содержимоеі
і і окна Module (Модуль), и вы можете і
і і устанавливать точки останова, сообщения і
і і Windows, и т.д. для DLL. і
і і і
і Load Symbols і Задает, загружать ли таблицу имен і
і (No/Yes) і идентификаторов DLL и ее исходный код, і
і і когда прикладная программа вызывает DLL. і
|
adfun.ru
|
|
|
|