adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
резидентным;
* Table Relocate, поскольку вы не можете установить ба-
зовый сегмент таблицы символических имен.
TDeb 3.0 #3-3 = 14 =
Новые средства TDW
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Новые свойства, поддерживаемые отладчиком программ для
Windows:
- Окно просмотра Windows Messages (Сообщения Windows), пока-
зывающее сообщения, передаваемые окнам в вашей программе.
- В окне регистрации Log вы имеете возможность выводить сле-
дующие три типа данных:
* Сегменты данных, расположенные в локальной динамичес-
ки распределяемой области вашей прикладной программы;
* Сегменты данных, расположенные в глобальной динами-
чески распределяемой области;
* Полный список модулей, составляющих программу, вклю-
чая динамически компонуемые библиотеки (DLL);
* Приведение типа выражений от логических номеров памя-
ти к дальним указателям.
- Отладка динамически компонуемых библиотек (DLL).
- Параметр командной строки -t, позволяющий устанавливать
начальный каталог запуска TDW, чтобы можно было использо-
вать файл конфигурации или файлы .EXE из этого каталога.
Регистрация сообщений Windows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Для трассирования передаваемых в окна вашей прикладной прог-
раммы сообщений выберите команду ViewіWindows Messages
(ОбзоріСообщения Windows), чтобы открыть окно Windows Messages.
Это окно показывает сообщения, которые Windows посылает в одно
или более окон вашей программы.
TDeb 3.0 #3-3 = 15 =
Окно Windows Messages (Сообщения Windows) состоит из трех
областей: области выбора окна Window Selection (верхняя левая об-
ласть), области класса сообщений Message Class (верхняя правая
область) и области сообщений Messages (нижняя область). Сообщения
показывает область Messages.
ЙН[*]НННWindows messagesННННННННННННННННННН3НННННН[ ][ ]»
єWindowproc wndproc±±±±±±±іLog±message±WM±PAINT±±±±±±±±±є
є і є
є і є
є і є
єДДДДДДДДДДДДДДДДДДДДДДДДДД<І°°°°°°°°°°°°°°°°°°°°°°°°°°>є
єHwnd:2214 wParam:0000 lParam:000000000 (000f) WM PAINT є
ИНННННННННННННННННННННННННННННННННННННННННННННННННННННННЅ
Рис. 17.1 Окно Windows Messages
TDeb 3.0 #3-3 = 16 =
Выбор окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ЪДДДДДДДДДДДДДДї
і Add... і Добавить
і Remove і Удалить
і Delete All і Удалить все
АДДДДДДДДДДДДДДЩ
Прежде чем вы сможете регистрировать сообщения, вы должны
сначала указать, для которого окна будут регистрироваться сообще-
ния. Это выполняется в верхней левой области, области выбора окна
Window Selection. Локальное меню этой области (активируемое нажа-
тием клавиш Alt-F10) позволяет добавить выбранное окно, удалить
выбранное окно или удалить все выбранные окна.
Добавление выбранного окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Для того, чтобы добавить выбранное окно, вы можете либо выб-
рать команду Add (Добавление) из локального меню области Window
Selection (Выбор окна), либо просто начать ввод в области. В том
и другом случае вы получите окно диалога:
Вы можете в этом окне ввести либо имя подпрограммы, которая
обрабатывает сообщения для окна (выбрав "кнопку" Window Proc),
либо значение логического номера (выбрав "кнопку" Handle). Введи-
те столько имен подпрограмм или логических номеров, сколько нужно
для трассировки сообщений для ваших окон.
Й[*]ННAdd window or handle to watchНННННН»
є є
є Window identifier є
є ±±±±±±±±±±±±±±±±± OK є
є ±±±±±± є
є Cancel є
є Identify by ±±±±±± є
є (*) Window proc Help є
є ( ) Handle ±±±±±± є
є є
ИННННННННННННННННННННННННННННННННННННННННј
Рис. 17.2 Диалоговое окно Add Window
Add window or handle to watch - добавить окно или описатель
для просмотра; Window identifier - идентификатор окна; Identify
by - идентификация по...; Window proc - процедура окна; Handle -
описатель; OK - нормально; Cancel - отмена; Help - справка.
Примечание: Ввод в этом окне первого значения также ус-
танавливает класс сообщений в "Log all messages" ("Регистра-
ция всех сообщений").
TDeb 3.0 #3-3 = 17 =
Легче указать окно по имени подпрограммы, обрабатывающей его
сообщения (например, WndProc), поскольку вы можете ввести имя
подпрограммы в любой момент после загрузки вашей программы.
Если вы предпочитаете использовать имя переменной с логичес-
ким номером, вы должны сначала перейти по программе к строке, где
этой переменной присваивается логический номер. (Для пошагового
перемещения по программе служат клавиши F7 или F8). Если вы пыта-
етесь ввести имя переменной до этого оператора присваивания, TDW
не сможет принимать сообщения для этого логического номера.
Выбор окна для прикладной программы, использующей ObjectWindows
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Если вы отлаживаете прикладную программу, использующую
ObjectWindows, и выбираете команду ViewіWindows Messages (Об-
зоріСообщения Windows), то по умолчанию выводится диалоговое окно
Windows Messages (Сообщения Windows), показанное на Рис. 17.1.
Для стандартных программ Windows и программ, использующих
ObjectWindows, это окно работает одинаково, только имя процедуры
Windows вы использовать не сможете. Вместо этого для того окна,
сообщения которого вы хотите регистрировать или по сообщениям
которого хотите установить прерывания, нужно использовать описа-
тели окна.
TDeb 3.0 #3-3 = 18 =
Получение описателя окна
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Перед тем, как вы сможете использовать описатель объекта ок-
на, нужно выполнить программу и пройти то место, где он инициали-
зируется. Для этого можно использовать несколько методов.
- Простейший способ состоит в запуске вашей программы и
возврате в TDW по Ctrl-Alt-SysRq.
- Другая возможность заключается в задании точки останова в
подпрограмме обработки сообщений (примером которой может
быть подпрограмма, обрабатывающая сообщения WM_MOUSEMOVE),
и последующем выполнении в окне действия, которое приведет
к срабатыванию точки останова (например, перемещения "мы-
ши").
- Если основные проблемы у вам заключаются в самом окне (та-
кие, как невосстановимая ошибка прикладной программы, воз-
никающая при первоначальном выводе окна), получать указа-
тель окна придется более длинным путем.
Так как описатель инициализируется функцией ObjectWindows
CreateWindow, и данная функция выполняется после того, как
вы инициализируете окно, то нужно переопределить в клас-
се окна эту функцию и для получения описателя установить
на ней точку прерывания.
Например, в следующем исходном коде данная функция переоп-
ределяется для класса окна ScribbleWindow программы
TDODEMO:
void ScribbleWindow()
{
TWindow::SetupWindow();
}
Далее позиционируйте курсор на строке после оператора ини-
циализации и нажмите F4 для выполнения программы до той
точки, где инициализируется описатель окна, диалогового
окна или управляющего элемента. В данном примере нужно по-
зиционировать курсор на закрывающей квадратной скобке
функции SetupWindow.
|
adfun.ru
|
|
|
|