Visual Studio Community 2013에서 C++를 개발 중입니다. UWP가 아닌 C++/Win32 프로젝트이며 Debug/x64 플랫폼으로 실행됩니다.ntdll.dll에 대한 pdb가 캐시되지 않은 이유
내 설정은 다음과 같습니다
Tools -> Options -> Debugging -> Symbols -> All module, unless excluded
Tools -> Options -> Debugging -> Symbols -> Cache symbol in this directory
캐시 기호 디렉토리는 *.pdb
파일의 무리를 포함하고 그것을 건드리지 않았다.
문제 : 나는 가끔 내가 내 프로젝트의 일환으로 인식하지 않기 때문에 관련 시스템을 추측이다 ntdll.dll
및 다른 파일을 다운로드 MS 심볼 서버에 접속에 대한 메시지가 디버거를 실행합니다.
ntdll.dll
이 다운로드되는 이유는 무엇입니까? This 기사는 말한다 :
기호는로드되지 않습니다 일반적인 이유는 다음과 같습니다
- 기호 경로가 올바른 위치
- 기호 파일이 모듈의 다른 버전이다 가리 키지 않는다 프로세스에서로드 된 것보다 낫습니다. Visual Studio에서는 심볼 파일이 모듈과 완전히 동일한 빌드에서 생성되어야합니다. 그것은 어떻게 수, 소스 코드를
내가 ntdll.dll
를 다시하지 않은 동일한 경우에도 다른 빌드에서 온 문자를로드 할 수 없습니다? Windows 커널의 일부이기 때문에 가능하지 않으므로 캐싱 대신에 ntdll.dll
에 대한 디버그 기호를 다시 다운로드해야하는 이유는 무엇입니까?
편집 : 나는 그런 일이 말했듯이
ntdll.dll C:\Windows\System32\ntdll.dll N/A No Loading disabled by Include/Exclude setting. 2 10.0.14393.447 (rs1_release_inmarket.161102-0100) 11/2/2016 11:13 AM 00007FFFDF410000-00007FFFDF5E1000 [12772] MyProject.exe
:
'MyProject.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Loading disabled by Include/Exclude setting.
출력 Debug -> Windows -> Modules
의 :
내가 Debug -> Windows -> Output
에서 다음 디버그 (F5)을 실행하면 내가 행 다음에 참조 가끔씩 이렇게 정확하게 재현 할 수 있을지 모르겠다. 지난 번에 작동 중이며 MS 서버에서 ntdll.dll
을 더 이상 다운로드하지 않은 것으로 보입니다. 우리 프로젝트가 x86에서 실행되지 않기 때문에 x64를 x86으로 변경할 수 없습니다.
ntdll.pdb\41C94DD545BD4FCBA2E8F404185B97DC1\ntdll.pdb
ntdll.pdb\77A5329C3B1E425FAA9519DA285D8DA71\ntdll.pdb
이 가능 명시 적으로 이미 캐시 된 버전을 사용하는 VS 말할 수 있나요 : 내 C:\Users\wakatana\AppData\Local\Temp\SymbolCache
(나는 하나가 86이 될 수있다 생각하고 또 다른 64에 대한하지만 난 잘 모르겠어요) 폴더/파일을 다음 포함 모든 새 프로젝트에 대해 ntdll.dll
의 C:\Users\wakatana\AppData\Local\Temp\SymbolCache
또는 기본 VS 동작은 무엇입니까?
내 OS 최신 업데이트
나는 심볼 서버를 비활성화하고 pdb 파일 누락에 대한 경고를 받아 들였습니다. 나는이 고통을 해결하는 해답을보고 싶지만. – drescherjm
질문을 잘 문서화해야합니다. 디버거가 연결된 상태에서 디버그> Windows> 모듈을 사용하십시오. 목록에서 ntdll.dll을 마우스 오른쪽 단추로 클릭하고 "심볼로드 정보"를 선택하십시오. 상자 내용을 질문에 복사/붙여 넣기하십시오. 그리고 Windows 버전을 언급하십시오. –
@WakanTanka, 디버깅 할 프로젝트 유형을 알려주시겠습니까? 이 dll 파일이 매번 앱을 디버깅하는 동안 심볼 서버에서 실제로 다운로드되었는지 여부 내가 아는 한 UWP와 같은 특정 응용 프로그램의 Windows 10 홈 버전에 대한 제한이 있으므로 "디버깅하지 않고 시작"을 선택하면 응용 프로그램이 정상적으로 실행되는지 여부에 관계없이 디버그/릴리스 플랫폼 대상을 X86/x64는 모든 CPU를 설치했는데 결과는 어때? –