2009-08-26 4 views
7

디버그/브레이크 모드에서 텍스트/XML 파일에 변수의 내용을 쓸 수있는 방법이 있습니까?보고있는 Visual Studio 변수를 파일로 출력

시나리오는 디버그에서 실행되는 긴 프로세스가 있고 프로세스가 모니터링 한 이벤트에 대해 충분한 세부 정보를 기록하지 못했음을 깨달았지만 다행스럽게도 내역은 변수 내에서 계속 사용할 수 있습니다. 코드에서.

이 목록에있는 수만 항목을 트롤링 할 수는 있지만 응용 프로그램을 멈 추면 지속되지는 않습니다 ... 이에 대한 명백한 컨텍스트 옵션은 없지만 어떤 방식 으로든 수동보다 나은 방법? 아니면 희망이 없으며 멈추고 다시 로깅 기능을 실행하고 다시 실행해야합니다.

중단 점을 맞추기 위해 코드를 수정하고 더 나은 로거를 만들기 위해 다시 작성하십시오. 메모리 내 데이터를 손실하지 않는 방법이 있습니까? 그것은 직접 실행 창을 사용하는 것입니다 할

답변

17

한 가지 방법 (메뉴 디버그 ->윈도우 ->즉시). 나타나는 창에서 "?" 변수의 값을 질의한다.

?history 

당신은 복사하여 텍스트 파일로도 출력을 붙여 또는 대안에 비주얼 스튜디오를 요청할 수있다 : 당신의 역사 변수를 가정

당신이 직접 실행 창에 다음을 입력하여 내용을 볼 문자열입니다 모든 명령 창 출력을 기록하십시오. 이러한 유형의 수행하려면 :

>log "c:\test.log" 
?history 
>log off 

LogTools.LogCommandWindowOutput의 별칭이며, 다음과 같은 매개 변수를 사용할 수 자세한 내용

Tools.LogCommandWindowOutput [filename] [/on|/off] [/overwrite] 

체크 아웃은 MSDN 문서 Log Command Window Output Command합니다.

도움이 되었기를 바랍니다.

+0

매우 감사합니다. – Gaz

+0

"?"사이에 공백을 추가하십시오. 및 "역사" – Ning

2

나는 나의 대답은 거의 JamesPickrell의 동일이라고 생각하지만, 직접 실행 창에서 당신은 또한이 같은 것을 할 수있는 :

My.Computer.FileSystem.WriteAllText("c:\temp.txt",history,True) 

을 A와 출력은 "역사"변수의 내용을 것이 파일은 c : \ temp.txt입니다.

3

덕분에 Richard's answer 덕분에 저에게 도움이되었습니다.

System.IO.File.WriteAllBytes(@"c:\Temp\temp.txt", myVar);

C:\Temp가 있는지 확인하십시오.

C:\이 아닌 폴더에 쓰는 이유는 관리자로 Visual Studio를 실행하지 않을 때 UnauthorizedAccessException을 피하기 위해서입니다.

관련 문제