기호 서버와 인터넷 방화벽
일부 시스템은 모든 인터넷 트래픽에 대한 인증이 필요한 인터넷 방화벽 또는 프록시 서버를 사용합니다. 초기 버전의 기호 서버는 시스템이 인증을 투명하게 처리하는 방화벽 클라이언트를 사용하지 않는 한 인터넷에서 기호에 액세스할 수 없었습니다.
Dbghelp 6.1부터 기호 서버는 이러한 인증이 필요한 프록시 서버를 지원합니다. 기호 서버는 컴퓨터의 LAN 설정에서 기본값으로 구성된 모든 서버를 사용합니다. 이를 찾으려면 제어판에서 인터넷 옵션 항목을 열고 연결 탭을 클릭한 다음 LAN 설정을 클릭합니다. Internet Explorer에서 도구 메뉴의 인터넷 옵션을 클릭하여 이 작업을 수행할 수도 있습니다. 기호 서버는 기본 및 챌린지 응답 인증 방법을 모두 사용하여 여러 브랜드의 프록시 서버에서 테스트되었습니다.
사용할 기호 서버에 대한 특정 프록시 서버를 정의하려면 _NT_SYMBOL_PROXY 환경 변수를 프록시 서버의 이름(또는 IP 주소)과 포트 번호로 설정합니다. 콜론으로 두 값을 구분합니다. 예를 들어 다음과 같습니다.
set _NT_SYMBOL_PROXY=myproxyserver:80
windbg 디버거를 사용할 때 사용할 기호 저장소를 가리키도록 기호 경로를 구성합니다. 한 가지 차이점은 프록시 서버에 전달하기 위해 사용자 ID와 암호를 입력해야 하는 대화 상자가 시스템에 표시된다는 것입니다. 잘못된 정보를 입력하면 대화 상자가 다시 표시됩니다. 취소 단추를 클릭하면 대화 상자가 닫히고 인터넷을 통해 기호 서버를 사용할 수 없게 됩니다.
최신 버전의 cdb.exe 또는 ntsd.exe를 사용하는 경우 이 기능은 기본적으로 해제되어 있습니다. 그러나 다음과 같이 !sym 확장 명령을 사용하여 이 기능을 사용하거나 사용하지 않도록 설정할 수 있습니다.
- 사용자 ID 및 암호를 묻는 메시지를 표시하려면 !sym prompts를 사용합니다.
- 사용자 ID 및 암호에 대한 메시지 표시를 해제하려면 !sym prompts off를 사용합니다.
프롬프트를 켜면 .reload 명령을 사용하여 기호를 다시 로드해야 합니다.
DbgHelp API는 이러한 변경 내용을 지원하도록 확장되었습니다. SymbolServerSetOptions 함수는 SSRVOPT_PROXY 옵션을 지원합니다. 데이터 매개 변수가 NULL이면 인터넷 옵션에 정의된 기본 프록시가 사용됩니다. 그렇지 않으면 프록시 서버의 이름과 포트 번호를 지정하는 0으로 끝나는 문자열이 전달됩니다. 이름과 포트는 myproxyserver:80과 같이 콜론으로 구분됩니다. SymSetOptions 함수는 SYMOPT_NO_PROMPTS 옵션을 지원합니다. 이렇게 하면 기호 서버에서 유효성 검사를 위한 모든 프롬프트가 꺼집니다.