Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подсистема отладчика может выполнять отладку нескольких целевых объектов одновременно. сеанс отладки начинается, когда подсистема получает целевой объект и продолжается до тех пор, пока не будут удалены все целевые объекты. Сеанс отладки недоступен, пока цели выполняются и доступен, когда текущая цель приостановлена. Подсистема может использоваться только для проверки и управления целевыми объектами, пока сеанс доступен.
Основной цикл отладчика обычно состоит из задания состояния выполнения, вызова метода WaitForEvent и обработки созданных событий . При вызове WaitForEvent сеанс становится недоступным.
Когда событие происходит в целевом объекте, подсистема приостанавливает все целевые объекты и сеанс становится доступным. Затем движок уведомляет обратные вызовы события и следует правилам фильтрации событий. Обратные вызовы событий и фильтры событий определяют способ выполнения в целевом объекте. Если они определяют, что подсистема должна разбиться на отладчик, метод WaitForEvent возвращается и сеанс остается доступным; в противном случае подсистема возобновляет выполнение целевого объекта таким образом, как определяется обратными вызовами событий и фильтрами событий, а сеанс снова становится недоступным.
В течение WaitForEvent, в частности, при уведомлении о обратных вызовах событий и обработке правил фильтрации подсистема находится в состоянии, называемом "внутри ожидания". В то время, когда система находится в этом состоянии, WaitForEvent не может вызываться (оно не является повторно вызываемым).
В целевом объекте необходимо выполнить два шага: задание состояния выполнения, а затем вызов WaitForEvent. Состояние выполнения можно задать с помощью метода SetExecutionStatus или путем выполнения команды отладчика, которая задает состояние выполнения, например, g(Go) и p (шаг).
Если последовательность команд отладчика выполняется вместе, например "g; ? @$ip"- неявное ожидание произойдет после любой команды, требующей выполнения в целевом объекте, если эта команда не является последней в последовательности. Неявное ожидание не может возникать, когда обработчик отладчика находится в состоянии "внутри ожидания". В этом случае выполнение команд будет остановлено, и текущая команда, которая пыталась вызвать неявное ожидание, будет интерпретирована как указание на то, как следует продолжать выполнение в целевой среде. Остальные команды будут игнорированы.
Примечание При определении доступности или недоступности сеанса ограниченное выполнение целевого процесса (например, пошаговое выполнение) считается выполнением движка. По завершении ограниченного выполнения сеанс становится доступным.
Хост-двигатель
При удаленной отладке можно использовать несколько экземпляров движка отладчика. Именно один из этих экземпляров ведет сеанс отладки; этот экземпляр называется хост-движком .
Все операции отладчика относятся к подсистеме узла, например загрузке символов и загрузке расширений.