Поделиться через


Предварительные интерфейсы для CorDebug.idl

Некоторые методы в интерфейсах отладки требуют нахождения процесса, в отношении которого ведется отладка, в определенном состоянии (предварительное условие). Предварительное условие действительно только в отношении непосредственных методов членов интерфейсов, объявленных в файле CorDebug.idl. (Таким образом, они применимы только к методам, не унаследованным от IUnknown).

Состояние процесса, в отношении которого ведется отладка

Отлаживаемые процесс имеет шесть состояний высокого уровня, описанных в следующих разделах. Только три из данных состояний (активное, синхронизируемое и зафиксированное системой) являются действительными.

Активное

Действительное состояние, в котором выполняется отлаживаемый процесс. Является состоянием между событиями отладки.

Синхронизируемое

Действительное состояние, в котором отлаживаемый процесс остановлен и все управляемые состояния приостановлены. Отлаживаемый процесс может войти в это состояние одним из двух способов:

  • В течение интервала между отправкой и продолжением управляемого события отладки. Является периодом после отправки управляемого (или внутриполосного, исходного) события отладки, но до продолжения данного события.

  • После вызова метода ICorDebugController::Stop.

Зафиксированное операционной системой

Действительное состояние, в котором отлаживаемый процесс остановлен на внеполосном исходном событии отладки. Данное состояние релевантно только для отладки взаимодействия.

Еще не инициализирован.

Недопустимое состояние, в котором отлаживаемый процесс не был инициализирован. Данное состояние активно только в течение периода, в котором отлаживаемый процесс создан и до отправки обратного вызова ICorDebugManagedCallback::CreateProcess. Если вызывается метод, определенный в CorDebug.idl, может возвратиться значение HRESULT CORDBG_E_NOTREADY.

Пассивный или деактивированный

Недопустимое состояние, в котором отлаживаемый процесс более не доступен для отладки. При вызове метода, определенного в CorDebug.idl в данном состоянии, может быть возвращено одно из нескольких значений HRESULT, включая CORDBG_E_PROCESS_DETACHED и CORDBG_E_PROCESS_TERMINATED.

Неустранимая ошибка

Недопустимое состояние, в которое отладчик входит при отправке обратного вызова ICorDebugManagedCallback::DebuggerError. Это означает, что управляемые службы отладки значительно повреждены и не могут быть использованы. Если вызывается метод, определенный в CorDebug.idl, может возвратиться значение HRESULT CORDBG_E_UNRECOVERABLE_ERROR.

Состояния, требуемые до вызова методов

Методы члена интерфейса ICorDebug не имеют относящихся к состояниям ограничений помимо объявлений, так как они не действуют непосредственно на объекте процесса. Методы члена всех других интерфейсов имеют некоторые сходства, относящиеся к процессам. Поэтому для этих методов отлаживаемый процесс при вызове должен находиться в одном из трех состояний: активное, синхронизированное или зафиксированное операционной системой.

Следующие методы могут вызывать при нахождении отлаживаемого процесса в активном состоянии:

Следующие методы могут вызываться при нахождении отладчика зафиксированном операционной системой состоянии или синхронизированном состоянии:

Все другие методы должны вызываться только при нахождении отладчика в синхронизированном состоянии. В противном случае может быть возвращено значение HRESULT CORDBG_E_PROCESS_NOT_SYNCHRONIZED.

См. также

Основные понятия

Общие сведения об отладке среды CLR

Другие ресурсы

Интерфейсы отладки

Отладка (ссылка неуправляемого API)