2013-05-02 6 views
3

이것은 특정 문제가 아닌 PDB 파일 및 빌드 프로세스에 대한 오해입니다. 그러나 다른 곳에서는 좋은 답을 찾기 위해 고심했습니다.PDB 파일에 .net 소스 정보가 모두 포함되어 있지 않습니다.

우리는 최근에 좋은 개발자 였고 pdb 파일을 중앙 기호 서버 (TFS의 모든 부분)에 인덱싱하고 저장하기 시작했습니다. 문제는 PDB 파일에 모든 소스 정보가 포함되어 있지 않은 것입니다.

PdbNavigator: Downloader: file://server/Symbols/my.assembly.pdb/1DB3F79EA3094EAAADFC6CDE6515FC871/my.assembly.pdb -> ok, 251 KB 
PdbNavigator: No debugging information found on symbol servers for my.assembly, Version=1.0.1.1206, Culture=neutral, PublicKeyToken=4cd79aeab39b919b 

을 그러나 동시에 그것은 어떤 소스를 찾을 수 없습니다 말한다 :

Visual Studio에서 소스로 이동하려고, 출력 창 같이 우리의 어셈블리의 PDB 파일이 발견된다. Windows SDK의 도구 중 일부를 사용하면 PDB 파일에 프로젝트의 소스 파일의 약 30 %에 대한 정보가 들어 있지 않음을 알 수 있습니다.

내가 PDB 파일은 프로젝트 내에서 실제로 사용되는 클래스의 소스 만 포함하지만 어쨌든 여러 클래스가 어셈블리 내에서 기능을 사용할 수없는 API 유형 어셈블리에 대해서는 막대한 문제가 발생한다는 것을 읽은 것 같습니다. 프로젝트의 다른 부분에서?

누구든지이 문제를 해결할 수 있다면 알려 주시기 바랍니다.

감사합니다.

+0

프로젝트의 속성 페이지에서 문제가되는 프로젝트의 빌드 탭 아래에 '코드 최적화'확인란이 보이나요? 확인 됐어? – Nicodemeus

답변

0

PDB (일반적으로)는 소스 코드를 저장하지 않으며 소스 코드 파일 이름 인 "문서"목록과 소스 행을 어셈블리 또는 이진 파일의 오프셋에 매핑하는 "방법 정보"를 포함합니다 . 어셈블리의 서명과 빌드 날짜가 PDB 파일의 서명과 빌드 날짜와 일치하면 PDB가 일치합니다. 기회는 MyAssembly.pdb에 올바른 버전이 있지만 서명 및/또는 빌드 날짜가 일치하지 않습니다.

서명은 내가 아는 한 노출되지 않지만 인터넷에서 PE 서명과 PDB 서명을 읽는 방법을 알려주는 비교 코드를 찾을 수 있습니다.

관련 문제