Microsoft MVP성태의 닷넷 이야기
디버깅 기술: 83. PDB 파일을 수동으로 다운로드하는 방법 [링크 복사], [링크+제목 복사],
조회: 27889
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)

PDB 파일을 수동으로 다운로드하는 방법

아래와 같은 질문이 있군요. ^^

Visual Studio 2013 기호 파일(pdb) 다운 로드 방법
; https://social.msdn.microsoft.com/Forums/ko-KR/bf7bda98-29a0-44f0-a69c-99a43c87a525/visual-studio-2013-pdb-?forum=vsko

공감이 가는 상황입니다. 요즘 보안 때문에 웬만한 고객사 사이트에서는 망 분리 적용으로 인해 인터넷이 안되는 경우가 종종 있습니다.

그래서 저도 궁금해지기 시작했는데요. ^^

사실, 디버거 입장에서 PDB 파일은 다음의 글에 쓴 것처럼 마이크로소프트가 공개한 심벌 서버로부터 HTTP 통신을 이용해 다운로드하는 것이 전부입니다.

Visual Studio 2010 - .NET Framework 소스 코드 디버깅
; https://www.sysnet.pe.kr/2/0/1009

그러려면 해당 DLL에 대한 PDB 파일 경로를 유추해야 하는데요, 이에 대해서는 전에 다음의 글로 쓴 적이 있습니다.

PDB 기호 파일의 경로 구성 방식
; https://www.sysnet.pe.kr/2/0/2925

그런데, 재미있는 것은 마이크로소프트가 심벌 서버로부터 PDB 파일을 일반적인 웹 브라우저로는 다운로드하지 못하게 제한한다는 것입니다.

예를 들어, 다음의 경로를 요청해 보면,

http://msdl.microsoft.com/download/symbols/ntdll.pdb/6DFD0B387E7941A587A3B64F824B1CAC1/ntdll.pdb

웹 브라우저에는 다음과 같은 문구만 나옵니다. (2020-11-23: 현재 정상적으로 다운로드가 됩니다.)

Microsoft Internet Symbol Server

The data you requested cannot be retrieved.

You have reached this page because either you or an application that you are running has tried to retrieve debugging data from Microsoft. The requested data is either not available or needs to be retrieved by using the latest Microsoft Symbol Server technology.

This internet debugging data storage site is provided by Microsoft to enhance debugging by automatically retrieving debugging files for various Microsoft products during a debugging session. The data at this site is not browseable. Instead, it is accessed by the Microsoft Symbol Server technology that ships with Microsoft Debugging Tools for Windows.

For more information about how to use the Microsoft Internet Symbol Server click here.

다행히 마이크로소프트 측 직원이 이런 상황에서 쓸 수 있는 프로그램을 만들어 (소스 코드까지 함께) 공개해 주었습니다. ^^

PDB Downloader
; https://docs.microsoft.com/en-us/archive/blogs/webtopics/pdb-downloader
; https://github.com/rajkumar-rangaraj/PDB-Downloader/releases/download/v1.0/PDBDownloader.exe

이 프로그램을 이용하면 원하는 (마이크로소프트의) 바이너리에 대해 PDB 파일을 개별적으로 다운로드할 수 있습니다. 물론 공개된 소스 코드가 있으니 원하는 목적에 맞게 수정하는 것도 가능합니다. 가령, 특정 응용 프로그램이 로드한 DLL 목록을 XML 파일로 구성한 다음, 인터넷이 되는 컴퓨터에서 자동으로 다운로드하게 만드는 것도 가능할 것입니다. ^^




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

[연관 글]






[최초 등록일: ]
[최종 수정일: 11/23/2020]

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

비밀번호

댓글 작성자
 




... 121  122  [123]  124  125  126  127  128  129  130  131  132  133  134  135  ...
NoWriterDateCnt.TitleFile(s)
10881정성태1/3/201623365오류 유형: 316. 윈도우 10 - 바탕/돋음 체가 사라져 한글이 깨지는 현상 [2]
10880정성태12/16/201521407오류 유형: 315. 닷넷 프로파일러의 오류 코드 정보
10879정성태12/16/201523266오류 유형: 314. Error : DEP0700 : Registration of the app failed. error 0x80070005
10878정성태12/9/201526493디버깅 기술: 75. UWP(유니버설 윈도우 플랫폼) 앱에서 global::System.Diagnostics.Debugger.Break 예외 발생 시 대응 방법
10877정성태12/9/201530753VC++: 93. std::thread 사용 시 R6010 오류 [2]
10876정성태11/26/201526660.NET Framework: 541. SignedXml을 이용한 ds:Signature만드는 방법 [3]파일 다운로드1
10875정성태11/26/201531830개발 환경 구성: 279. signtool.exe의 다중 서명 기능 [2]
10874정성태11/26/201527553개발 환경 구성: 278. 인증서와 인증서를 이용한 코드 사인의 해시 구분
10873정성태11/25/201526225.NET Framework: 540. C# - 부동 소수 계산 왜 이렇게 나오죠? (2) [3]파일 다운로드1
10872정성태11/24/201534282.NET Framework: 539. C# - 부동 소수 계산 왜 이렇게 나오죠? (1) [1]
10871정성태11/23/201528718오류 유형: 313. SignTool Error: No certificates were found that met all the given criteria.
10870정성태11/23/201529898오류 유형: 312. 윈도우 10 TH2 (버전 1511) 업데이트가 안되는 경우 [1]
10869정성태11/23/201526078오류 유형: 311. certutil 실행 오류 - 0x80070057 [1]
10868정성태11/20/201525501제니퍼 .NET: 25. 제니퍼 닷넷 적용 사례 (5) - RestSharp 라이브러리의 CPU High 현상파일 다운로드1
10867정성태10/18/201528656.NET Framework: 538. Thread.Abort로 인해 프로세스가 종료되는 현상
10866정성태10/14/201523912.NET Framework: 537. C# - Reflection의 박싱 없이 값 형식을 다루는 방법파일 다운로드1
10865정성태10/13/201524221.NET Framework: 536. Thread.Abort의 스레드 종료 지연파일 다운로드1
10864정성태10/12/201521929.NET Framework: 535. aspnet.config 파일의 설정을 읽는 방법
10863정성태10/9/201527466.NET Framework: 534. ASP.NET 응용 프로그램이 예외로 프로세스가 종료된다면?
10862정성태10/9/201525700오류 유형: 310. 비주얼 스튜디오 - Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))
10861정성태10/9/201530377기타: 54. 도서: 시작하세요! C# 6.0 프로그래밍: 기본 문법부터 실전 예제까지 (2)
10860정성태10/5/201528100개발 환경 구성: 277. IIS AppPool의 시작/중단에 대한 이벤트 로그 확인 방법
10859정성태10/5/201528511.NET Framework: 533. C#에서 string 형식이 primitive일까요? [6]
10858정성태10/2/201524993VS.NET IDE: 105. Visual Studio의 단위 테스트 작성 시 Fakes를 이용한 메서드 재정의 방법 [1]파일 다운로드1
10857정성태10/1/201521697VS.NET IDE: 104. Visual C++ 프로젝트의 빌드 이벤트에서 환경 변수 사용하는 방법
10856정성태9/30/201533158.NET Framework: 532. WPF DataGrid의 데이터 바인딩 시 리플렉션의 부하는 어느 정도일까요?파일 다운로드1
... 121  122  [123]  124  125  126  127  128  129  130  131  132  133  134  135  ...