다음을 통해 공유


입력 및 출력 사용

디버거 엔진의 입력 및 출력 스트림에 대한 개요는 입력 및 출력을 참조하세요.

입력

입력 메서드가 클라이언트에서 호출되는 경우 엔진은 모든 클라이언트에서 입력 을 요청합니다. 입력은 입력의 호출자에게 반환 됩니다.

입력 콜백

엔진이 클라이언트에서 입력을 요청하면 해당 클라이언트에 등록된 IDebugInputCallbacks 개체를 사용합니다. SetInputCallbacks를 사용하여 IDebugInputCallbacks 개체를 클라이언트에 등록할 수 있습니다. 각 클라이언트에는 IDebugInputCallbacks 개체가 하나 이상 등록되어 있을 수 있습니다.

입력 요청은 IDebugInputCallbacks::StartInput 메서드를 호출하는 엔진으로 시작됩니다. 그러면 엔진이 입력을 기다리고 있음을 IDebugInputCallbacks 개체에 알릴 수 있습니다.

IDebugInputCallbacks 개체에 엔진에 대한 일부 입력이 있는 경우 모든 클라이언트의 ReturnInput 메서드를 호출할 수 있습니다. ReturnInput 메서드가 호출되면 엔진은 더 이상 입력을 받지 않습니다. 이 메서드의 후속 호출자에게 입력이 수신되지 않았다는 알림이 표시됩니다.

그런 다음, 엔진은 IDebugInputCallbacks::EndInput 을 호출하여 입력 대기가 중지되었음을 나타냅니다.

마지막으로, 엔진은 IDebugOutputCallbacks ::Output을 사용하여 입력을 제공하는 데 사용되는 클라이언트를 제외한 모든 클라이언트의 등록된 IDebugOutputCallbacks 개체에 이 입력을 에코합니다. 비트 마스크가 DEBUG_OUTPUT_PROMPT 설정된 출력입니다.

출력

출력은 여러 클라이언트 메서드(예: Output 및 OutputVaList)를 사용하여 엔진으로 전송될 수 있습니다. 출력을 받으면 엔진이 일부 클라이언트에 출력을 보냅니다.

클라이언트는 출력 마스크 를 사용하여 관심 있는 출력 유형을 나타냅니다. 엔진에서 출력을 생성할 때마다 출력 형식을 지정하는 마스크가 함께 제공됩니다. 출력 형식이 클라이언트의 출력 마스크와 일치하는 경우 클라이언트는 출력을 받게 됩니다. 출력 마스크는 SetOutputMask 를 호출하여 설정하고 GetOutputMask를 사용하여 쿼리할 수 있습니다. 출력 마스크 값에 대한 자세한 내용은 DEBUG_OUTPUT_XXX 참조하세요.

엔진에서 출력을 보낼 클라이언트 목록은 출력 컨트롤에 의해 제어됩니다. 일반적으로 출력 컨트롤은 모든 클라이언트에 출력을 보내도록 설정됩니다. 그러나 ControlledOutput 및 ControlledOutputVaList 를 사용하여 일시적으로 변경할 수 있습니다. 출력 컨트롤 값에 대한 자세한 내용은 DEBUG_OUTCTL_XXX 참조하세요.

출력은 엔진에 의해 버퍼링될 수 있습니다. 여러 출력이 엔진에 전달되면 출력을 수집하여 하나의 큰 조각으로 클라이언트에 보낼 수 있습니다. 이 버퍼를 플러시하려면 FlushCallbacks를 사용합니다.

각 클라이언트 개체의 출력 너비는 클라이언트 개체에 대한 출력 디스플레이의 너비입니다. 이 너비는 힌트로만 사용되지만 일부 명령 및 확장 함수는 이 너비에 따라 출력 형식을 지정합니다. 너비는 GetOutputWidth 메서드에서 반환되며 SetOutputWidth 메서드를 사용하여 설정할 수 있습니다.

출력 콜백

엔진이 클라이언트에 출력을 보내면 클라이언트에 등록된 IDebugOutputCallbacks 개체를 사용합니다. SetOutputCallbacks를 사용하여 IDebugOutputCallbacks 개체를 클라이언트에 등록할 수 있습니다. 각 클라이언트에는 IDebugInputCallbacks 개체가 하나 이상 등록되어 있을 수 있습니다.

출력을 보내기 위해 엔진은 IDebugOutputCallbacks::Output 메서드를 호출합니다 .

출력 줄 접두사

각 클라이언트 개체에는 클라이언트 개체와 연결된 출력 콜백으로 전송되는 모든 출력 줄 앞에 추가되는 출력 줄 접두 사 가 있습니다. 들여쓰기 또는 각 출력 줄에 식별 표시를 배치하는 데 사용할 수 있습니다.

출력 줄 접두사는 GetOutputLinePrefix에서 반환되며 SetOutputLinePrefix를 사용하여 설정할 수 있습니다. 출력 줄 접두사를 일시적으로 변경하고 나중에 다시 변경하려면 PushOutputLinePrefix 및 PopOutputLinePrefix를 사용합니다.

로그 파일

디버거 엔진은 디버깅 세션을 기록하기 위해 로그 파일 열기를 지원합니다. 최대 하나의 로그 파일을 한 번에 열 수 있습니다. 출력 콜백으로 전송된 출력은 로그되지 않도록 플래그가 지정되지 않은 한 이 로그 파일로도 전송됩니다.

로그 파일을 열려면 OpenLogFile2 (또는 OpenLogFile)를 사용합니다. GetLogFile2(또는 GetLogFile) 메서드는 현재 열려 있는 로그 파일을 반환합니다. 로그 파일을 닫려면 CloseLogFile을 사용합니다.

SetLogMask 메서드를 사용하여 로그 파일로 전송된 출력을 필터링할 수 있으며 GetLogMask는 현재 로그 파일 필터를 반환합니다.

프롬프트

대화형 디버깅 세션에서 프롬프트를 사용하여 디버거가 사용자 입력을 기다리고 있음을 사용자에게 나타낼 수 있습니다. 프롬프트는 OutputPrompt 및 OutputPromptVaList 메서드를 사용하여 출력 콜백으로 전송됩니다. 표준 프롬프트의 내용은 GetPromptText에서 반환됩니다.