성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] VT sequences to "CONOUT$" vs. STD_O...
[정성태] NetCoreDbg is a managed code debugg...
[정성태] Evaluating tail call elimination in...
[정성태] What’s new in System.Text.Json in ....
[정성태] What's new in .NET 9: Cryptography ...
[정성태] 아... 제시해 주신 "https://akrzemi1.wordp...
[정성태] 다시 질문을 정리할 필요가 있을 것 같습니다. 제가 본문에...
[이승준] 완전히 잘못 짚었습니다. 댓글 지우고 싶네요. 검색을 해보...
[정성태] 우선 답글 감사합니다. ^^ 그런데, 사실 저 예제는 (g...
[이승준] 수정이 안되어서... byteArray는 BYTE* 타입입니다...
글쓰기
제목
이름
암호
전자우편
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'>pdb 파일을 다운로드하기 위한 symchk.exe 실행에 필요한 최소 파일</h1> <p> windbg 설치 후 함께 있는 symchk.exe를 이용하면 명령행에서 쉽게 PDB 파일을 다운로드할 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Using SymChk ; <a target='tab' href='https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/using-symchk'>https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/using-symchk</a> </pre> <br /> 예를 들어, "ntdll.dll"의 pdb 파일을 다운로드하려면 다음과 같이 명령을 내리면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > symchk.exe c:\WINDOWS\system32\ntdll.dll /s http://msdl.microsoft.com/download/symbols [또는, 다운로드할 폴더를 지정해서] symchk.exe c:\WINDOWS\system32\ntdll.dll /s SRV*c:\temp*http://msdl.microsoft.com/download/symbols // D:\symbols;srv*D:\symbols*http://msdl.microsoft.com/download/symbols </pre> <br /> <hr style='width: 50%' /><br /> <br /> 그런데 symchk.exe만 복사해 실행하면 SymbolCheck.dll이 없다고 오류가 발생합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > The code execution cannot proceed because SymbolCheck.dll was not found. Reinstalling the program may fix this problem. SymbolCheck.dll이(가) 없어 코드 실행을 진행할 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다. </pre> <br /> 당연히 symchk.exe와 동일한 폴더에 있던 SymbolCheck.dll을 복사해 주면 이 부분은 해결되지만 그래도 다음과 같이 여전히 pdb 다운로드에는 실패합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>symchk.exe c:\WINDOWS\system32\ntdll.dll /s http://msdl.microsoft.com/download/symbols</span> SYMCHK: ntdll.dll FAILED - ntdll.pdb mismatched or not found SYMCHK: FAILED files = 1 SYMCHK: PASSED + IGNORED files = 0 </pre> <br /> 좀 더 오류 내용을 확인하기 위해 "/v" 옵션을 주면 symsrv.dll이 없다는 단서를 얻을 수 있습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > c:\temp> <span style='color: blue; font-weight: bold'>symchk.exe /v c:\WINDOWS\system32\ntdll.dll /s SRV*c:\temp*http://msdl.microsoft.com/download/symbols</span> [SYMCHK] Searching for symbols to c:\WINDOWS\system32\ntdll.dll in path http://msdl.microsoft.com/download/symbols DBGHELP: Symbol Search Path: http://msdl.microsoft.com/download/symbols [SYMCHK] Using search path "http://msdl.microsoft.com/download/symbols" DBGHELP: No header for c:\WINDOWS\system32\ntdll.dll. Searching for image on disk DBGHELP: c:\WINDOWS\system32\ntdll.dll - OK <span style='color: blue; font-weight: bold'>DBGHELP: symsrv.dll load failure</span> DBGHELP: http://msdl.microsoft.com/download/symbols\ntdll.pdb - file not found DBGHELP: http://msdl.microsoft.com/download/symbols\dll\ntdll.pdb - file not found DBGHELP: http://msdl.microsoft.com/download/symbols\symbols\dll\ntdll.pdb - file not found DBGHELP: ntdll - no symbols loaded [SYMCHK] MODULE64 Info ---------------------- [SYMCHK] Struct size: 1680 bytes [SYMCHK] Base: 0x180000000 [SYMCHK] Image size: 2031616 bytes [SYMCHK] Date: 0x99ca0526 [SYMCHK] Checksum: 0x001ed133 [SYMCHK] NumSyms: 0 [SYMCHK] SymType: SymNone [SYMCHK] ModName: ntdll [SYMCHK] ImageName: c:\WINDOWS\system32\ntdll.dll [SYMCHK] LoadedImage: c:\WINDOWS\system32\ntdll.dll [SYMCHK] PDB: "" [SYMCHK] CV: RSDS [SYMCHK] CV DWORD: 0x53445352 [SYMCHK] CV Data: ntdll.pdb [SYMCHK] PDB Sig: 0 [SYMCHK] PDB7 Sig: {0C2E19EA-1901-E9B8-2E45-67D2D21E56D2} [SYMCHK] Age: 1 [SYMCHK] PDB Matched: TRUE [SYMCHK] DBG Matched: TRUE [SYMCHK] Line nubmers: FALSE [SYMCHK] Global syms: FALSE [SYMCHK] Type Info: FALSE [SYMCHK] ------------------------------------ SymbolCheckVersion 0x00000002 Result 0x00010001 DbgFilename ntdll.dbg DbgTimeDateStamp 0x00000000 DbgSizeOfImage 0x00000000 DbgChecksum 0x00000000 PdbFilename ntdll.pdb PdbSignature {0C2E19EA-1901-E9B8-2E45-67D2D21E56D2} PdbDbiAge 0x00000001 [SYMCHK] [ 0x00000000 - 0x00010001 ] Checked "c:\WINDOWS\system32\ntdll.dll" SYMCHK: ntdll.dll FAILED - ntdll.pdb mismatched or not found SYMCHK: FAILED files = 1 SYMCHK: PASSED + IGNORED files = 0 </pre> <br /> 따라서 symsrv.dll도 복사해 주는데 그래도 여전히 pdb 다운로드에는 실패합니다. 이쯤 해서 <a target='tab' href='http://www.dependencywalker.com/'>depends.exe</a>를 이용해 symchk.exe의 의존성을 살펴보면 dbghelp.dll과 dbgeng.dll이 걸려 있는 것을 볼 수 있습니다.<br /> <br /> 그런데 실제로 테스트해 보면 dbghelp.dll만 필요한 것을 알 수 있습니다. 결국, symchk.exe를 정상적으로 실행하려면 다음의 파일만 복사해 오면 됩니다.<br /> <br /> <ul> <li>symchk.exe</li> <li>dbghelp.dll</li> <li>SymbolCheck.dll</li> <li>symsrv.dll</li> </ul> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1523
(왼쪽의 숫자를 입력해야 합니다.)