На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Debugging Functions



Although most of the Windows debugging functions are used to create a debugger, several functions are designed for use in the process being debugged.

To start a process and debug it, a debugger must use CreateProcess, as described in the previous section.
To debug a process that is already executing, the debugger should use DebugActiveProcess with the process identifier retrieved by OpenProcess. DebugActiveProcess attaches the debugger to the active process. In this case, only the active process can be debugged; its child processes cannot. The debugger must have appropriate access to the executing process to use DebugActiveProcess. For more information about access rights, see Security.

After the debugger has either created or attached itself to the process it intends to debug, the kernel notifies the debugger of all debugging events that occur in the process, and, if specified, in any child processes. For more information about debugging events, see Debugging Events.
The debugger uses the WaitForDebugEvent function at the beginning of its main loop. This function blocks the debugger until a debugging event occurs. When the debugging event occurs, the system suspends all threads in the process being debugged and notifies the debugger of the event. The debugger can call the SetDebugErrorLevel function to set the minimum error level at which Windows will pass the debugging event to it.

The debugger can interact with the user, or manipulate the state of the process being debugged, by using the GetThreadContext, GetThreadSelectorEntry, ReadProcessMemory, SetThreadContext, and WriteProcessMemory functions. GetThreadSelectorEntry returns the descriptor table entry for a specified selector and thread. Debuggers use the descriptor table entry to convert a segment-relative address to a linear virtual address. The ReadProcessMemory and WriteProcessMemory functions require linear virtual addresses.

Debuggers frequently read the memory of the process being debugged and write the memory that contains instructions to the instruction cache. After the instructions are written, the debugger calls FlushInstructionCache to execute the cached instructions.
The debugger uses the ContinueDebugEvent function at the end of its main loop. This function allows the process being debugged to continue executing.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Отладка Функций



Хотя наиболее Окно, отлаживающий функции использованы, чтобы создавать отладчика, несколько функций разработаны для использования в процессе, отлаживанном.

Для того, чтобы начинать с процесса и отлаживать это, отладчик должен использовать CreateProcess, как описано в предшествующей секции.
Чтобы отлаживать процесс, который уже выполняется, отладчик должен использовать DebugActiveProcess с идентификатором процесса извлеченным OpenProcess. DebugActiveProcess ПОДКЛЮЧАЕТ отладчика к активному процессу. В этом случае, только активный процесс может быть отлажен; процессы ребенка не могут. Отладчик должен иметь подходящий доступ к выполняющему процессу, чтобы использовать DebugActiveProcess. Более подробно о правах доступа, смотри Безопасность.

После того, как отладчик имеет или создано или было приложено себя к процессу, он предназначается отлаживаться, зерно уведомляет отладчик о всей отладке событий, которая происходит в процессе, и, если определено, в любых процессах ребенка. Более подробно об отладочных событиях, смотри Отладку Событий.
Отладчик использует функцию WaitForDebugEvent в начале своего основного цикла. Эта функция блокирует отладчика пока отладочный случай не произойдет. Когда отладочный случай происходит, система задерживает всю резьбу в процессе, отлаживанном и уведомляет отладчик о случае. Отладчик может назвать функцию SetDebugErrorLevel, чтобы устанавливать минимальную ошибку нацеливать на который Окно передаст отладочный случай этому.

Отладчик может взаимодействовать с потребителем или манипулировать состоянием процесса, отлаживанного, используя GetThreadContext, GetThreadSelectorEntry, ReadProcessMemory, SetThreadContext, и функции WriteProcessMemory. GetThreadSelectorEntry ВОЗВРАЩАЕТ табличному входу дескриптора для определенного селектора и резьбы. Программы отладки используют табличный вход дескриптора, чтобы преобразовывать сегментный-относительный адрес в линейный виртуальный адрес. ReadProcessMemory И функции WriteProcessMemory требуют линейные виртуальные адресы.

Программы отладки часто были прочитаны память процесса, отлаживанного и была написана память, которая содержит инструкции в кеш инструкции. После того, как инструкции будут написаны, отладчик называет FlushInstructionCache, чтобы выполнять кеш инструкции.
Отладчик использует функцию ContinueDebugEvent в конце своего основного цикла. Эта функция допускает процесс, отлаживанный, чтобы продолжать выполняться.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz