다음을 통해 공유


SymSrv 사용

SymSrv는 중앙 집중식 기호 저장소에서 기호 파일을 제공합니다. 이러한 저장소에는 많은 수의 프로그램 또는 운영 체제에 해당하는 기호 파일이 포함될 수 있습니다. 저장소는 미니덤프 파일을 디버깅할 때 특히 유용한 이진 파일을 포함할 수도 있습니다.

저장소는 실제 기호 및 이진 파일을 포함하거나 기호 파일에 대한 포인터만 포함할 수 있습니다. 저장소에 포인터가 포함된 경우 SymSrv는 원본에서 직접 실제 파일을 검색합니다.

또한 SymSrv는 특수한 디버깅 작업에 적합한 작은 하위 집합으로 큰 기호 저장소를 분리할 수 있습니다.

마지막으로 SymSrv는 운영 체제에서 제공하는 로그온 정보를 사용하여 HTTP 또는 HTTPS 원본에서 기호 파일을 가져올 수 있습니다. SymSrv는 스마트 카드, 인증서 및 일반 로그인 및 암호로 보호되는 HTTPS 사이트를 지원합니다.

기호 경로 설정

기호 경로설명한 대로 기호 경로(_NT_SYMBOL_PATH 환경 변수)는 세미콜론으로 구분된 여러 경로 요소로 구성될 수 있습니다. 이러한 경로 요소 중 하나 이상이 "srv*" 텍스트로 시작하는 경우 요소는 기호 서버이며 SymSrv를 사용하여 기호 파일을 찾습니다.

메모

"srv*" 텍스트를 지정하지 않았지만 실제 경로 요소가 기호 서버 저장소인 경우 기호 처리기는 "srv*"가 지정된 것처럼 작동합니다. 기호 처리기는 지정된 경로의 루트 디렉터리에 "pingme.txt"이라는 파일이 있는지 검색하여 이 결정을 내립니다.

 

기호 경로가 세미콜론으로 구분된 기호 경로 요소로 구성되는 것처럼 기호 서버는 별표로 구분된 기호 저장소 요소로 구성됩니다. "srv*" 접두사 다음에는 최대 10개의 기호 저장소가 있을 수 있습니다. 목록의 왼쪽에 나열된 저장소를 다운스트림 저장소라고 하며, 목록의 오른쪽에 있는 저장소를 업스트림 저장소라고 합니다.

srv\**SymbolStore* srv\**SymbolStore1*\**SymbolStoreN*

경로에 기호 저장소 요소가 하나만 포함된 경우 SymSrv는 해당 저장소에서 직접 요청된 파일을 사용하려고 시도합니다.

경로에 두 개의 기호 저장소가 있는 경우 SymSrv는 가장 왼쪽 기호 저장소에서 기호 파일을 찾습니다. 파일이 있는 경우 사용됩니다. SymSrv가 없는 경우 기호 저장소에서 바로 오른쪽을 찾습니다. 파일이 있는 경우 왼쪽 저장소에 복사되고 여기에서 열립니다.

두 개 이상의 저장소가 있는 경우 이 동작은 파일을 찾거나 목록에 더 이상 저장소가 없을 때까지 계속 오른쪽으로 진행됩니다.

파일은 맨 왼쪽 저장소를 제외한 모든 저장소에서 열리지 않습니다. 체인의 다른 위치에서 파일을 찾은 경우 왼쪽의 모든 저장소에 복사됩니다. 이 복사 프로세스를 "연계"라고 하며 이 문서의 뒷부분에 설명된 특정 이점을 제공합니다.

기호 저장소 유형

다음 표에서는 지원되는 기호 저장소 형식의 예제를 표시합니다.

기호 저장소 유형 묘사
\\server\share 원격 서버에 있는 공유 폴더의 완전한 UNC 경로입니다.
c:\LocalCache 클라이언트 컴퓨터의 디렉터리에 대한 경로입니다.
https://InternetSite 기호를 호스팅하는 웹 사이트의 URL입니다. 목록에서 가장 오른쪽에 있는 저장소여야 하며 목록에 있는 유일한 저장소가 아니어야 합니다.
https://SecureInternetSite 기호를 호스팅하는 보안 웹 사이트의 URL입니다. 암호, Windows 로그인 자격 증명, 인증서 및 스마트 카드를 지원할 수 있습니다. 목록에서 가장 오른쪽에 있는 저장소여야 하며 목록에 있는 유일한 저장소가 아니어야 합니다.
<빈> 두 별표 사이에 텍스트가 없으면 기본 다운스트림 저장소 나타냅니다. 위치는 SymSetHomeDirectory호출하여 설정됩니다. 기본값은 호출 애플리케이션의 프로그램 디렉터리 바로 아래에 "sym"이라는 디렉터리입니다. 이를 기본 로컬 캐시라고도 합니다.

 

HTTP 기반 기호 저장소는 쓸 수 없으므로 목록에서 가장 오른쪽에 있는 저장소여야 합니다. HTTP 기반 기호 저장소가 저장소 목록의 중간 또는 왼쪽에 있는 경우 찾은 파일을 복사할 수 없으며 체인이 손상됩니다. 또한 기호 처리기가 웹 사이트에서 파일을 열 수 없으므로 HTTP 기반 저장소는 맨 왼쪽이나 목록에만 저장되지 않아야 합니다. SymSrv가 이 기호 경로와 함께 제공된 경우 기본 다운스트림 저장소가 기호 경로에 표시되는지 여부에 관계없이 파일을 기본 다운스트림 저장소에 복사하여 복구하고 해당 위치에서 엽니다.

예제

\\mybuilds\mysymbols에 기호 저장소와 함께 SymSrv를 사용하려면 다음 기호 경로를 설정합니다.

set _NT_SYMBOL_PATH= srv*\\mybuilds\mysymbols

디버거가 \\mybuilds\mysymbols의 기호 저장소에서 로컬 디렉터리 c:\localsymbols로 기호 파일을 복사하도록 기호 경로를 설정하려면 다음을 사용합니다.

set _NT_SYMBOL_PATH=srv*c:\localsymbols*\\mybuilds\mysymbols

디버거가 \\mybuilds\mysymbols의 기호 저장소에서 기본 다운스트림 저장소(일반적으로 c:\debuggers\sym)로 기호 파일을 복사하도록 기호 경로를 설정하려면 다음을 사용합니다.

set _NT_SYMBOL_PATH=srv**\\mybuilds\mysymbols

연계 저장소를 사용하려면 다음 기호 경로를 설정합니다.

set _NT_SYMBOL_PATH = srv*c:\localsymbols*\\NearbyServer\store*https://DistantServer

이 예제에서 SymSrv는 먼저 c:\localsymbols에서 파일을 찾습니다. 이 파일이 있으면 파일의 경로를 반환합니다. 그렇지 않으면 SymSrv는 \\NearbyServer\store에서 파일을 찾습니다. 이 파일이 발견되면 SymSrv는 파일을 c:\localsymbols에 복사하고 파일 경로를 반환합니다. 파일을 찾을 수 없으면 SymSrv는 https://DistantServer파일을 찾습니다. 이 파일이 있으면 SymSrv는 파일을 \\NearbyServer\store에 복사한 다음 c:\localsymbols로 복사합니다.

이 마지막 예제에서는 기호 경로의 신중한 디자인을 사용하여 기호 다운로드를 최적화하는 방법을 보여 줍니다. 디버거 그룹이 있는 작업 사이트가 있고 모두 먼 위치에서 기호를 가져와야 하는 경우 모든 디버거 근처에 기호 저장소가 있는 공통 서버를 설정할 수 있습니다. 그런 다음 위의 기호 경로를 사용하여 모든 디버거를 설치합니다. 특정 버전의 foo.pdb가 필요한 첫 번째 디버거는 https://DistantServer \\NearbyServer\store로 다운로드한 다음 c:\localsymbols의 자체 컴퓨터로 다운로드합니다. 동일한 파일이 필요한 다음 디버거는 이전 디버거에 의해 이미 해당 위치에 다운로드되었으므로 \\NearbyServer\store에서 다운로드할 수 있습니다. 이 다중 수준 캐싱은 상당한 시간과 네트워크 대역폭을 절약합니다.

Microsoft 기호 저장소

Microsoft는 여러 버전의 Windows 운영 체제에 대한 기호 파일이 포함된 인터넷 기호 서버에 대한 액세스를 제공합니다. 이 기호 카탈로그는 완전하지는 않지만 광범위합니다. 다른 Microsoft 제품도 표시됩니다.

인터넷 기호 서버는 핫 픽스, 서비스 팩, 보안 롤업 패키지 및 소매 릴리스를 포함하여 Microsoft Windows 운영 체제에 대한 다양한 Windows 기호로 채워집니다. 현재 Windows용 베타 및 릴리스 후보뿐만 아니라 Microsoft Internet Explorer와 같은 다양한 Microsoft 제품에 대한 심볼을 서버에서 사용할 수 있습니다.

디버깅하는 동안 인터넷에 액세스할 수 있는 경우 디버깅 세션 전에 기호 파일을 별도로 다운로드하는 대신 디버깅 세션 중에 필요에 따라 기호를 다운로드하도록 디버거를 구성할 수 있습니다. 기호는 지정한 디렉터리 위치로 다운로드된 다음 디버거가 해당 위치에서 로드합니다.

Microsoft 기호 저장소의 URL은 https://msdl.microsoft.com/download/symbols. 다음 예제에서는 디버거 기호 경로를 설정하는 방법을 보여 줍니다(c:\DownstreamStore대한 다운스트림 저장소 경로 대체).

srv*c:\DownstreamStore*https://msdl.microsoft.com/download/symbols

압축된 파일

SymSrv는 이 압축이 Windows Server 2003 리소스 키트와 함께 배포된 compress.exe 도구로 미리 구성되었으므로 압축된 파일이 포함된 기호 저장소와 호환됩니다. 압축된 파일은 파일 확장명에서 마지막 문자로 밑줄이 있어야 합니다(예: module1.pd_ 또는 module2.db_). 자세한 내용은 SymStore를 사용하는 방법참조하세요.

계단식으로 연결하면 대상 저장소가 경로에서 가장 왼쪽에 있는 저장소가 아니면 파일의 압축이 해제되지 않습니다. 경로에 저장소가 하나만 있고 압축된 파일이 포함된 경우 SymSrv는 기본 다운스트림 저장소가 기호 경로에 표시되지 않더라도 파일을 기본 다운스트림 저장소로 복사하고 여기에서 엽니다.

DbgHelp 6.1 이하.: 마스터 저장소의 파일이 압축된 경우 다운스트림 저장소를 사용해야 합니다. SymSrv는 다운스트림 저장소에 복사하기 전에 모든 파일의 압축을 풉니다.

캐시 삭제

다운스트림 저장소를 캐시로 사용하는 경우 디스크 공간을 절약하기 위해 언제든지 이 디렉터리를 삭제할 수 있습니다.

다양한 프로그램 또는 Windows 버전에 대한 기호 파일을 포함하는 방대한 기호 저장소가 있을 수 있습니다. 대상 컴퓨터에서 사용되는 Windows 버전을 업그레이드하는 경우 캐시된 기호 파일은 모두 이전 버전과 일치합니다. 이러한 캐시된 파일은 더 이상 사용되지 않으므로 캐시를 삭제하는 것이 좋습니다.

Windows용 디버깅 도구에는 디렉터리 트리에서 파일을 선택적으로 제거하여 가장 최근에 사용한 파일을 남기는 agestore.exe 유틸리티가 함께 제공됩니다. 이 도구는 기호 서버 저장소에서 사용되지 않는 파일을 정리하기 위해 설계되었습니다. 이를 통해 차단 날짜 및 디렉터리 크기 알고리즘을 비롯한 많은 옵션을 제어할 수 있습니다.

플랫 캐시 디렉터리

기본 다운스트림 저장소를 표준 기호 트리 구조가 아닌 플랫 디렉터리로 선언할 수 있습니다. 이렇게 하려면 SYMOPT_FLAT_DIRECTORYSymSetOptions 함수를 호출합니다(SymSrv에서 SSRVOPT_FLAT_DEFAULT_STORE 옵션도 설정함). SymSetHomeDirectory를 먼저 호출해야 합니다. 그렇지 않으면 기호 파일이 프로그램 디렉터리에 기록될 수 있습니다.

포인터 파일

SymStore는 대상 파일 자체가 아닌 대상 파일을 가리키는 파일을 만들고 사용할 수 있습니다. 기호 저장소에 이러한 포인터 파일이 포함된 경우 기본값은 포인터 파일에 표시된 위치에서 저장소로 파일을 복사하는 것입니다. 포인터 파일이 가리키는 파일 대신 복사되도록 저장소를 구성하려면 대상 저장소의 루트에 wantsptr.txt 파일을 만듭니다. wantsptr.txt 내용은 중요하지 않고 파일의 존재만 있으면 됩니다.

기호 목록에서 파일 제외

기호 검색에서 파일을 제외하려면 symsrv.ini 또는 레지스트리에서 해당 이름을 지정할 수 있습니다. symsrv.ini파일을 지정하려면 제외라는 섹션을 만들고 파일을 나열합니다. 다음 예제와 같이 파일 이름에 와일드카드가 포함될 수 있습니다.

[Exclusions]
dbghelp.pdb
symsrv.*
mso*

Symsrv.ini symsrv.dll 있는 동일한 디렉터리에 있어야 합니다. 대부분의 설치에서 파일이 존재하지 않으므로 새 파일을 만들어야 합니다.

또는 레지스트리에서 제외할 파일을 저장할 수 있습니다. 다음 레지스트리 키를 만듭니다. HKEY_LOCAL_MACHINE\Software\Microsoft\Symbol Server\Exclusions. 각 파일 이름을 이 키 내에 문자열 값(REG_SZ)으로 저장합니다. 문자열 값의 이름은 제외할 파일의 이름을 지정합니다. 문자열 값의 내용을 사용하여 파일이 제외되는 이유를 설명하는 주석을 저장할 수 있습니다.

설치

SymSrv(symsrv.dll) 기호 서버는 Windows용 디버깅 도구 패키지에 포함되어 있습니다. 로드하는 dbghelp.dll 복사본과 동일한 디렉터리에 설치해야 합니다. 자세한 내용은 DbgHelp 라이브러리 호출을 참조하십시오.