Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 4개 있습니다.)
(시리즈 글이 2개 있습니다.)
디버깅 기술: 147. pdb 파일을 다운로드하기 위한 symchk.exe 실행에 필요한 최소 파일
; https://www.sysnet.pe.kr/2/0/12091

.NET Framework: 873. C# - 코드를 통해 PDB 심벌 파일 다운로드 방법
; https://www.sysnet.pe.kr/2/0/12094




pdb 파일을 다운로드하기 위한 symchk.exe 실행에 필요한 최소 파일

windbg 설치 후 함께 있는 symchk.exe를 이용하면 명령행에서 쉽게 PDB 파일을 다운로드할 수 있습니다.

Using SymChk
; https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/using-symchk

예를 들어, "ntdll.dll"의 pdb 파일을 다운로드하려면 다음과 같이 명령을 내리면 됩니다.

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




그런데 symchk.exe만 복사해 실행하면 SymbolCheck.dll이 없다고 오류가 발생합니다.

The code execution cannot proceed because SymbolCheck.dll was not found. Reinstalling the program may fix this problem. 

SymbolCheck.dll이(가) 없어 코드 실행을 진행할 수 없습니다. 프로그램을 다시 설치하면 이 문제가 해결될 수 있습니다. 

당연히 symchk.exe와 동일한 폴더에 있던 SymbolCheck.dll을 복사해 주면 이 부분은 해결되지만 그래도 다음과 같이 여전히 pdb 다운로드에는 실패합니다.

c:\temp> symchk.exe c:\WINDOWS\system32\ntdll.dll /s http://msdl.microsoft.com/download/symbols
SYMCHK: ntdll.dll            FAILED  - ntdll.pdb mismatched or not found

SYMCHK: FAILED files = 1
SYMCHK: PASSED + IGNORED files = 0

좀 더 오류 내용을 확인하기 위해 "/v" 옵션을 주면 symsrv.dll이 없다는 단서를 얻을 수 있습니다.

c:\temp> symchk.exe /v c:\WINDOWS\system32\ntdll.dll /s SRV*c:\temp*http://msdl.microsoft.com/download/symbols
[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
DBGHELP: symsrv.dll load failure
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

따라서 symsrv.dll도 복사해 주는데 그래도 여전히 pdb 다운로드에는 실패합니다. 이쯤 해서 depends.exe를 이용해 symchk.exe의 의존성을 살펴보면 dbghelp.dll과 dbgeng.dll이 걸려 있는 것을 볼 수 있습니다.

그런데 실제로 테스트해 보면 dbghelp.dll만 필요한 것을 알 수 있습니다. 결국, symchk.exe를 정상적으로 실행하려면 다음의 파일만 복사해 오면 됩니다.

  • symchk.exe
  • dbghelp.dll
  • SymbolCheck.dll
  • symsrv.dll




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 3/9/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2020-07-29 03시47분
OFFLINE에서 메모리 덤프를 분석할 때 필요한 TIP
; https://kuaaan.tistory.com/509

symchk.exe /id "G:\dump\memorydump.dmp" /om C:\temp\symbolinfo.txt
symchk.exe /ie notepad.exe /om C:\temp\symbolinfo.txt
symchk.exe /if c:\Windows\system32\FirewallAPI.dll /om c:\temp\symbolinfo.txt

symchk.exe /im c:\temp\symbolinfo.txt /s SRV*C:\Temp\SYMBOLS*http://msdl.microsoft.com/download/symbols
정성태

... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12640정성태5/13/202121086오류 유형: 716. RDP 연결 - Because of a protocol error (code: 0x112f), the remote session will be disconnected. [1]
12639정성태5/12/202117430오류 유형: 715. Arduino: Open Serial Monitor - The module '...\detection.node' was compiled against a different Node.js version using NODE_MODULE_VERSION
12638정성태5/12/202117676사물인터넷: 63. NodeMCU v1 ESP8266 - 펌웨어 내 파일 시스템(SPIFFS, LittleFS) 및 EEPROM 활용
12637정성태5/10/202117902사물인터넷: 62. NodeMCU v1 ESP8266 보드의 A0 핀에 다중 아날로그 센서 연결 [1]
12636정성태5/10/202118181사물인터넷: 61. NodeMCU v1 ESP8266 보드의 A0 핀 사용법 - FSR-402 아날로그 압력 센서 연동파일 다운로드1
12635정성태5/9/202116420기타: 81. OpenTabletDriver를 (관리자 권한으로 실행하지 않고도) 관리자 권한의 프로그램에서 동작하게 만드는 방법
12634정성태5/9/202114879개발 환경 구성: 572. .NET에서의 필수 무결성 제어 - 외부 Manifest 파일을 두는 방법파일 다운로드1
12633정성태5/7/202117934개발 환경 구성: 571. UAC - 관리자 권한 없이 UIPI 제약을 없애는 방법
12632정성태5/7/202119054기타: 80. (WACOM도 지원하는) Tablet 공통 디바이스 드라이버 - OpenTabletDriver
12631정성태5/5/202117918사물인터넷: 60. ThingSpeak 사물인터넷 플랫폼에 ESP8266 NodeMCU v1 + 조도 센서 장비 연동파일 다운로드1
12630정성태5/5/202118634사물인터넷: 59. NodeMCU v1 ESP8266 보드의 A0 핀 사용법 - CdS Cell(GL3526) 조도 센서 연동파일 다운로드1
12629정성태5/5/202120442.NET Framework: 1057. C# - CoAP 서버 및 클라이언트 제작 (UDP 소켓 통신) [1]파일 다운로드1
12628정성태5/4/202118321Linux: 39. Eclipse 원격 디버깅 - Cannot run program "gdb": Launching failed
12627정성태5/4/202118390Linux: 38. 라즈베리 파이 제로 용 프로그램 개발을 위한 Eclipse C/C++ 윈도우 환경 설정
12626정성태5/3/202118516.NET Framework: 1056. C# - Thread.Suspend 호출 시 응용 프로그램 hang 현상 (2)파일 다운로드1
12625정성태5/3/202117012오류 유형: 714. error CS5001: Program does not contain a static 'Main' method suitable for an entry point
12624정성태5/2/202121506.NET Framework: 1055. C# - struct/class가 스택/힙에 할당되는 사례 정리 [10]파일 다운로드1
12623정성태5/2/202117745.NET Framework: 1054. C# 9 최상위 문에 STAThread 사용 [1]파일 다운로드1
12622정성태5/2/202113559오류 유형: 713. XSD 파일을 포함한 프로젝트 - The type or namespace name 'TypedTableBase<>' does not exist in the namespace 'System.Data'
12621정성태5/1/202118466.NET Framework: 1053. C# - 특정 레지스트리 변경 시 알림을 받는 방법 [1]파일 다운로드1
12620정성태4/29/202121795.NET Framework: 1052. C# - 왜 구조체는 16 바이트의 크기가 적합한가? [1]파일 다운로드1
12619정성태4/28/202121670.NET Framework: 1051. C# - 구조체의 크기가 16바이트가 넘어가면 힙에 할당된다? [2]파일 다운로드1
12618정성태4/27/202119979사물인터넷: 58. NodeMCU v1 ESP8266 CP2102 Module을 이용한 WiFi UDP 통신 [1]파일 다운로드1
12617정성태4/26/202117199.NET Framework: 1050. C# - ETW EventListener의 Keywords별 EventId에 따른 필터링 방법파일 다운로드1
12616정성태4/26/202116844.NET Framework: 1049. C# - ETW EventListener를 상속받았을 때 초기화 순서파일 다운로드1
12615정성태4/26/202114103오류 유형: 712. Microsoft Live 로그인 - 계정을 선택하는(Pick an account) 화면에서 진행이 안 되는 문제
... 46  47  48  49  50  51  [52]  53  54  55  56  57  58  59  60  ...