2010-03-24 2 views

답변

4

기본적으로 추적은 TraceListener 클래스의 구현 인 DefaultTraceListener을 사용하여 출력 창에 씁니다. 다음 구성 파일에 리스너를 등록,

최소, Write()WriteLine()에서 미리 공급 대안 TraceListener들 중 하나를 사용하거나 처리 (자신을 구현 중 하나에 당신이해야합니다 별도의 출력에 기록합니다.

+0

나는 이것을 과거에 실제로 해왔습니다. 매우 유용합니다. 그러나이 경우 Visual Studio의 "출력"고정 가능한 창에 대해 실제로 말하고 있습니다. 콘솔, 디버그 및 추적 메시지를 개별적으로 모니터하는 것이 좋을 것입니다 (어셈블리로드 및 첫 번째 예외 메시지가있는 해당 창에도 모두 덤프 됨). – Pwninstein

+0

예, Visual Studio 플러그인을 작성하여 각각에 대해 별도의 창을 제공 할 수 있으며 사용자 정의 TraceListeners와 함께 플러그인에 출력을 보낼 수 있습니다. 그러나 기본적으로'DefaultTraceListener'는'Output' 윈도우에만 독점적으로 씁니다. Visual Studio는 응용 프로그램의 Listeners 컬렉션에 그것을 추가합니다. 그래서 원하는 것을 얻는 포인트 앤 클릭 방식이 없습니다. – STW

+1

디버그 출력 창에 어셈블리로드 및 첫 번째 예외가 덤프되지 않도록 '해제'합니다. 해당 창에서 마우스 오른쪽 버튼을 클릭하고 팝업 메뉴의 맨 아래에서 예외 표시 및 모듈로드 및 언로드 메시지를 끄는 옵션이 표시됩니다. –

2

다른 창에서 출력을 얻으려면 VS에서는 하나의 옵션 만 사용할 수 있습니다 : 도구 + 옵션, 디버거, 일반, "모든 출력 창 텍스트를 직접 실행 창으로 리디렉션"그러나 원하는 것은 할 수 없습니다

VS 창으로 출력하는 데 사용할 수있는 좋은 옵션이 없습니다. 유일한 메커니즘은 Windows Outp입니다 utDebugString() 디버거가 메시지를 볼 수있게하는 API 함수입니다. 이미 DefaultTraceListener에 의해 사용되고 있습니다. Visual Studio 호스팅 프로세스는 Console.Write/Line() 출력을 출력 창으로 리디렉션 할 수 있도록 지원합니다. 호스팅 방식이 CLR의 사용자 지정 호스팅 버전이라는 것 이외에는 작동 방식이 분명하지 않습니다. 너가 그것을 대체하는 것이 가능하다고 가정 할 때 무언가 너는 달려 들기를 바라지 않을 것이다.

지금까지 가장 실용적인 방법은 자체 추적 수신기를 사용하여 추적 출력을 표시하는 고유 한 창을 만드는 것입니다. 여러 줄 TextBox가 포함 된 Windows Forms 양식 클래스로 수행하기에 충분합니다. 실용적인 방법은 주 EXE의 특성에 따라 다릅니다. 또는 파일을 추적하고 파일에 대한 업데이트를 볼 정도로 스마트 한 파일 뷰어를 사용할 수 있습니다. 내가 멀리 사용합니다.

아, SysInternals의 DebugView utility이 있습니다. OutputDebugString() 텍스트를 스누핑합니다.

관련 문제