Предварительные интерфейсы для 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