Windows .dmp 또는 .minidmp를 제공 할 때 사용할 모듈/디버그 기호를 식별하고 액세스하는 방법

StackOverflow https://stackoverflow.com/questions/402314

문제

어떤 식 으로든 Windows *.dmp 파일 읽기

임의의 고객으로부터 덤프 파일을 수신 한 후 디버그 세션을 실행하여 충돌을 확인하면 종종 MS 또는 기타 타사 라이브러리에 있습니다. 다음 문제는 실제로 모듈을 사용할 수 있도록 PC 설정에 대한 지식이 없다는 것입니다.

예를 들어, 나는 현재 ntdll.dll (5.01.2600.5512)에 상징을로드하려고 노력하고 있습니다. MSVC 2005에서 모듈 목록 창의 경로 열은 완전히 경로화 된 파일 이름 앞에 a *를 표시하고 XP/SP1/SP1A/SP2/SP3에 다운로드 한로드 기호를 거부합니다.

인터넷에서 다운로드 할 수있는 Symbol Server 설정이 있고 로컬 캐시에 저장할 수 있습니다. 로컬 캐시에 PC에있는 모듈에 대해 잘 작동하는 것으로 보입니다. 방법에 동등한 GUI를 사용합니다

Set _NT_SYMBOL_PATH=srv*d:\SymbolCache*\\server1\Third-Party-PDB;srv*d:\SymbolCache*\\server2\Windows\Symbols*http://msdl.microsoft.com/download/symbols

아마도 나는 잘못된 기호가 있지만 새로운 기호가 다운로드되지 않기 때문에 다음에 어디로 가야합니까? 고객에게 연락하여 설치 한 SP와 다른 패치를 물어봐야합니까? 필요한 기호를 얻으려면 해당 컴퓨터를 설치 한 다음 DMP 파일로 디버거를 실행해야합니까?

도움이 되었습니까?

해결책

Minidump를 디버깅하기 위해 무엇을 사용하고 있습니까? 즉, Windbg 또는 Visual Studio? 그리고 Minidump는 어떻게 생성 되었습니까?

Minidump에는 시스템 DLL 기호를 올바르게 해결하기에 충분한 정보가 있어야합니다. 상징의 로컬 다운로드를 사용하고 있습니까? http://msdl.microsoft.com/?

업데이트 : 공개 Microsoft Symbol Store를 도구-> 옵션-> 디버깅-> Symbols-> Symbol File (.pdb) 위치에 추가 한 다음 모듈 창에서 모듈을 마우스 오른쪽 버튼으로 클릭하여 기호를 수동으로로드 할 수 있어야합니다. 자동으로 수행되지 않으면로드합니다.

2005 대 VS를 보지 못하는 것도 가능합니다. _NT_SYMBOL_PATH Minidump 기호를 해결합니다.

다른 팁

WINDBG를 사용하는 경우 (일부 Windows 용 도구 디버깅 도구 패키지), 그러면 Microsoft에서 올바른 기호를 자동으로 당기는 것은 간단합니다. ".symfix"(또는 ".symfix+"를 사용하여 기호 경로를 구성하여 기존 기호 검색 경로에 간단히 추가) 명령을 추가하십시오.

이 완료되고 WindBG에 충돌 덤프가로드되면 ".Reload /F"를 입력하여 WindBG가 기호를 다시로드하도록합니다. 덤프 파일 자체의 정보를 사용하여 컴퓨터에 어떤 DLL이 있는지에 관계없이 Microsoft의 공개 기호 서버에서 올바른 기호를 가져옵니다.

어떤 이유로 든이 작업을 수행 한 후 기호가 제대로로드되지 않으면 Windbg의 명령 창에 "! Sym Noisy"를 입력하고 기호를 다시로드하십시오. WINDBG가로드하려고 시도하면 검색/로드 프로세스에서 발생하는 오류를 출력합니다. 이 오류 메시지는 잘못된 내용과 올바른 기호가로드되지 않은 이유를 더욱 진단하는 데 도움이됩니다.

이 게시물 사용될 수있는 정보가 있습니다.

입력하는 경우 "Set _NT_SYMBOL_PATH = srv..."명령 프롬프트에는 다음과 같은 두 가지가 있습니다.

  • cmd.exe'에스 set 명령은 공백을 무시하지 않으므로 "라는 변수를 정의합니다._NT_SYMBOL_PATH", 아니다 "_NT_SYMBOL_PATH".
  • 해당 명령 프롬프트의 자식으로 디버거를 시작해야합니다. 그러나 제어판을 사용하여 영구 환경 변수를 설정하거나 사용하는 경우이 작업을 수행 할 필요가 없습니다. setx 명령 (Windows Vista 또는 Windows 리소스 키트 중 하나).

상징 경로를 다른 방식으로 설정하는 경우 적용되지 않습니다.

지침을 따르십시오 이 KB 기사, 심볼 경로가 올바르게 구성되어 있는지, WindBG에 액세스 할 수 있고 NTDLL 기호 (예 : NTDLL 기호가 실제로 심볼 캐시에 다운로드되어 있는지 확인하십시오. 이 기사는 또한 Symchk 도구를 통해 캐시에서 기호를 수동으로 다운로드하고 확인하는 방법에 대한 지침을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top