성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Roll A Lisp In C - Reading ; https...
[정성태] Java - How to use the Foreign Funct...
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>windbg - 풀 덤프 파일로부터 텍스트 파일의 내용을 찾는 방법</h1> <p> 예전에 설명한 대로,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > windbg - 덤프 파일과 handle 정보 ; <a target='tab' href='http://www.sysnet.pe.kr/2/0/1836'>http://www.sysnet.pe.kr/2/0/1836</a> </pre> <br /> 사용자 모드(user mode)의 풀 덤프 파일로는 핸들 값으로부터 별다르게 얻을 수 있는 정보가 없습니다. 파일명조차 못 구하는데 파일 내용을 알아내는 것은 말할 필요도 없습니다.<br /> <br /> 단지, 우회적인 방법을 사용해야 하는데요. 가장 좋은 방법은, 로드된 파일이 정적 변수에 담겨 있는 경우입니다. 그럴 때는 그냥 찾아들어가서 해당 변수의 내용을 덤프하면 파일의 내용을 얻을 수 있습니다.<br /> <br /> 만약, 그런 변수가 있는지 알 수 없다면 차선책으로 문자열 검색을 해보는 것입니다. 이런 경우 해당 파일의 내용을 식별해 줄 가장 최선의 문자열을 검색어로 쓰는 것입니다.<br /> <br /> 가령 예를 들어보면...<br /> <br /> 다음과 같은 간단한 콘솔 프로그램을 보면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > using System; using System.IO; namespace ConsoleApplication1 { class Program { static string txt = null; static void Main(string[] args) { txt = File.ReadAllText("test.txt"); Console.ReadLine(); } } } </pre> <br /> 다음의 내용을 담은 test.txt 파일을 로드하는데,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > test is good The .dump command creates a user-mode or kernel-mode crash dump file. ... .suspend_ui (Suspend WinDbg Interface) .symfix (Set Symbol Store Path) .... You can specify a full path and file name or just the file name. If the file name contains ... </pre> <br /> 이런 프로그램의 풀 덤프 파일을 windbg에서 디버깅할 때 메모리를 검색해 보는 것입니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 0:000> <span style='color: blue; font-weight: bold'>s -u 0 L?ffffffff`ffffffff "test is good"</span> 00000207`5eab5068 0074 0065 0073 0074 0020 0069 0073 0020 t.e.s.t. .i.s. . 00000207`5eab58d8 0074 0065 0073 0074 0020 0069 0073 0020 t.e.s.t. .i.s. . 00000207`5eab6b84 0074 0065 0073 0074 0020 0069 0073 0020 t.e.s.t. .i.s. . </pre> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 명령어 s -u : 유니코드 검색 (ascii인 경우 -a) 0 : 시작 주소 지정 L?ffffffff`ffffffff : 범위를 64비트 끝으로 지정. </pre> <br /> 검색 결과가 3개가 나왔는데요. 각각 du 명령어로 전체 내용을 확인할 수 있습니다. (또는 Alt+5를 눌러 메모리 창을 띄운 후 주소 값에 따라 덤프해볼 수 있습니다.)<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > 0:000> <span style='color: blue; font-weight: bold'>du 00000207`5eab5068</span> 00000207`5eab5068 "test is good....The .dump comman" 00000207`5eab50a8 "d creates a user-mode or kernel-" 00000207`5eab50e8 "mode crash dump file. ... .suspe" 00000207`5eab5128 "nd_ui (Suspend WinDbg Interface)" 00000207`5eab5168 " .symfix (Set Symbol Store Path)" 00000207`5eab51a8 " .... You can specify a full pat" 00000207`5eab51e8 "h and file name or just the file" 00000207`5eab5228 " name. If the file name contains" 00000207`5eab5268 " ..." 0:000> <span style='color: blue; font-weight: bold'>du 00000207`5eab58d8</span> 00000207`5eab58d8 "test is good...." 0:000> <span style='color: blue; font-weight: bold'>du 00000207`5eab6b84</span> 00000207`5eab6b84 "test is good....The .dump comman" 00000207`5eab6bc4 "d creates a user-mode or kernel-" 00000207`5eab6c04 "mode crash dump file. ... .suspe" 00000207`5eab6c44 "nd_ui (Suspend WinDbg Interface)" 00000207`5eab6c84 " .symfix (Set Symbol Store Path)" 00000207`5eab6cc4 " .... You can specify a full pat" 00000207`5eab6d04 "h and file name or just the file" 00000207`5eab6d44 " name. If the file name contains" 00000207`5eab6d84 " ..." </pre> <br /> 소개한 방법이 조금은 허탈하겠지만, 어쩔 수 없습니다.... 운입니다. ^^ 따라서 대용량의 응용 프로그램이라면 저렇게 쉽게 찾기 힘들 수 있습니다.<br /> <br /> (혹시 자신만의 팁이 있는 분은 덧글 좀. ^^)<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1090
(왼쪽의 숫자를 입력해야 합니다.)