Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Общие сведения о входных и выходных потоках в обработчике отладчика см. в разделе "Входные и выходные данные".
Ввод
Подсистема запрашивает входные данные от всех клиентов, если метод Input вызывается на клиенте. Входные данные возвращаются вызывающей части входных данных.
Обратные вызовы ввода
Когда обработчик запрашивает входные данные от клиента, он использует объект IDebugInputCallbacks , зарегистрированный в этом клиенте. Объект IDebugInputCallbacks может быть зарегистрирован в клиенте с помощью SetInputCallbacks. Каждый клиент может иметь не более одного объекта IDebugInputCallbacks , зарегистрированного в нем.
Запрос ввода начинается с обработчика, вызывающего метод IDebugInputCallbacks::StartInput . Это сообщает объектУ IDebugInputCallbacks , что модуль теперь ожидает входных данных.
Если объект IDebugInputCallbacks имеет некоторые входные данные для обработчика, он может вызвать метод ReturnInput любого клиента. После вызова метода ReturnInput обработчик больше не будет принимать входные данные. Последующие вызывающие стороны будут проинформированы о том, что входные данные не были получены.
Затем обработчик вызовет IDebugInputCallbacks::EndInput , чтобы указать, что он перестал ожидать входных данных.
Наконец, движок отразит этот ввод в зарегистрированный объект IDebugOutputCallbacks каждого клиента (за исключением того, который использовался для предоставления входных данных), используя метод IDebugOutputCallbacks::Output с битовой маской, установленной на DEBUG_OUTPUT_PROMPT.
Выпуск
Выходные данные могут отправляться в подсистему с помощью нескольких клиентских методов, например Output и OutputVaList. После получения выходных данных модуль отправляет его некоторым клиентам.
Клиенты используют маску вывода , чтобы указать, какие типы выходных данных они интересуют. Всякий раз, когда выходные данные создаются подсистемой, она сопровождается маской, указывающей его выходной тип. Если тип выходных данных соответствует маске вывода клиента, клиент получит выходные данные. Маску вывода можно задать путем вызова SetOutputMask и запроса с помощью GetOutputMask. Дополнительные сведения о значениях маски вывода см. в DEBUG_OUTPUT_XXX .
Список клиентов, в которые модуль отправляет выходные данные, контролируется элементом управления вывода. Как правило, выходной элемент управления устанавливается для отправки выходных данных всем клиентам; однако его можно временно изменить с помощью ControledOutput и ControledOutputVaList. Дополнительные сведения о значениях элемента управления выходными данными см. в DEBUG_OUTCTL_XXX .
Выходные данные могут быть буферичены подсистемой. Если в движок передаются несколько частей выходных данных, он может собрать их и отправить клиентам в одном большом фрагменте. Чтобы очистить этот буфер, используйте FlushCallbacks.
Каждый клиентский объект имеет выходную ширину, которая является шириной вывода для клиентского объекта. Хотя эта ширина используется только в качестве указания, некоторые команды и функции расширения форматируют выходные данные на основе этой ширины. Ширина возвращается методом GetOutputWidth и может быть задана с помощью метода SetOutputWidth.
Обратные вызовы выходных данных
Когда модуль отправляет выходные данные клиенту, он использует объект IDebugOutputCallbacks , зарегистрированный в клиенте. Объект IDebugOutputCallbacks может быть зарегистрирован в клиенте с помощью SetOutputCallbacks. Каждый клиент может иметь не более одного объекта IDebugInputCallbacks , зарегистрированного в нем.
Для отправки выходных данных подсистема вызывает метод IDebugOutputCallbacks::Output .
Префикс выходной строки
Каждый клиентский объект имеет префикс выходной строки , которая добавляется к каждой строке выходных данных, отправляемых в выходной обратный вызов, связанный с объектом клиента. Это можно использовать для отступа или размещения меток для идентификации на каждой строке выходных данных.
Префикс выходной строки возвращается GetOutputLinePrefix и может быть задан с помощью SetOutputLinePrefix. Чтобы временно изменить префикс выходной строки и позже изменить его снова, используйте PushOutputLinePrefix и PopOutputLinePrefix.
Файлы журнала
Модуль отладчика поддерживает открытие файла журнала для записи сеанса отладки. В большинстве случаев один файл журнала может быть открыт одновременно. Данные, отправленные в обратные вызовы, также записываются в этот лог-файл (если ему не задано необязательное свойство не регистрировать).
Чтобы открыть файл журнала, используйте OpenLogFile2 (или OpenLogFile). Метод GetLogFile2 (или GetLogFile) возвращает открытый файл журнала. Чтобы закрыть файл журнала, используйте CloseLogFile.
Метод SetLogMask можно использовать для фильтрации выходных данных, отправляемых в файл журнала, и GetLogMask вернет текущий фильтр файлов журнала.
Подсказка
В интерактивном сеансе отладки можно использовать запрос, чтобы указать пользователю, что отладчик ожидает ввода пользователем. Запрос отправляется в выходные обратные вызовы с помощью методов OutputPrompt и OutputPromptVaList . Содержимое стандартного запроса возвращено функцией GetPromptText.