기호 파일 (pdb)에서 소스 파일의 위치를 변경하는 방법
문제
기본적으로 내가 원하는 작업 : pdb 파일에는 소스 파일의 위치 (예 : C:\dev\proj1\helloworld.cs
)가 포함되어 있습니다.다른 위치 (예 : \more\differenter\location\proj1\helloworld.cs
)를 포함하도록 해당 pdb 파일을 수정할 수 있습니까?
해결책
Windows 용 디버깅 도구의 소스 인덱싱 기능을 사용하면 소스 저장소에있는 파일의 적절한 수정 버전에 대한 참조를 PDB 파일의 대체 스트림으로 저장할 수 있습니다.
다른 팁
pdb 파일에 포함 된 경로에 대해 좀 더 일반적으로 알고 싶다면 먼저 MS-DOS subst
명령을 사용하여 특정 폴더를 드라이브 문자에 매핑 할 수 있습니다.
라코 디스
그런 다음 N : 드라이브와 관련된 프로젝트를 열고 다시 빌드하십시오.PDB 파일은 N :의 소스 파일을 참조합니다.이제 빌드 할 때했던 것처럼 나중에 루트 디렉토리 "N :"을 호출하는 한 특정 소스 파일 세트를 어디에 두는지는 중요하지 않습니다.
이 방법은 John Robbins가 그의 훌륭한 저서 Debugging Applications for Microsoft .NET에서 권장합니다.및 Microsoft Windows .
내 컴퓨터에서 빌드하지 않은 실행 파일에서 발생한 크래시 덤프를 디버깅하기 위해 이에 대한 답을 찾고 싶었습니다. 따라서 PDB에서 참조 된 소스 코드에 대한 경로가 유효하지 않습니다.실행 파일에 참조 된 PDB에.
검색 결과 작동하는 것을 찾지 못한 후 실행 파일과 PDB를 크래시 덤프 파일과 함께 (즉, 동일한 디렉터리에) 배치하면 VS에서 크래시 덤프를 열고 실행하면 VS가PDB / EXE를 로컬로 사용하십시오.또한 호출 스택에서 항목을 클릭 할 때 소스 코드의 위치를 묻는 메시지도 표시됩니다. 관련된 소스 코드를 가리키면 모두 정상적으로 작동합니다. 훌륭합니다!
어쨌든 이것이 다른 사람에게 도움이되기를 바랍니다 ... :)
On Freund가 이미 지적했듯이 가능합니다. 그러나 디버깅 중에 소스를 찾고로드 할 수만 있다면 그에 따라 소스 경로를 설정하는 것이 더 좋은 방법입니다.디버거에 설정되면 PDB 내부의 모든 하드 코딩 된 경로를 표시합니다.
windbg에서 (예 :) <인용구> .srcpath + 경로 _ 소스 _ 루트 또는 (원격으로 디버깅하는 경우) : <인용구> .lsrcpath + 경로 _ 소스 _ 루트