동료 중 한 명이 고객에게 핫픽스 빌드를 제공 한 후 pdb 파일을 삭제했습니다. 문제의 빌드가 (간헐적으로) 충돌하고 우리는 몇 가지 충돌 덤프가 있습니다. 우리는 버전 관리에 모든 소스 코드를 가지고 있으며, 그것을 .exe로 컴파일하고 그 코드를 얻을 수 있습니다. 그러나 이러한 기호는 크래시 덤프와 정확히 일치하지 않습니다. 몇 가지 함수가 일정한 오프셋에 의해 해제 된 것처럼 보이지만, 우리는 한 줌을 살펴 봤습니다.exe에 대한 심볼을 재생성 할 수 있습니까?
나는 다음과 같은 작업을 할 수 있기를 원합니다. (수동으로 가짜 작업을 할 수는 있지만 엄청난 양의 작업입니다.) 덤프에있는 각 스레드에 대한 스택 추적을 얻고 덤프에 포인터를 캐스팅합니다. 적절한 유형을 선택하고 Visual Studio 디버거에 나타냅니다. 그게 중요한 일이라면 나는 2005 년을 사용하고있다.
원본 코드, 모든 .obj 파일 및 원본 .exe가있는 pdb를 다시 만들 수있는 도구가 있습니까? 아니면 우리가 컴파일/링크를 할 때 "정확히이 다른 exe와 똑같이 만드십시오"라고 말하는 것과 같은 것입니까?
지금까지의 답변에 기반한 빠른 업데이트 : 고객에게 보낸 exe 파일이 있습니다. 도움이된다면 해당 파일에 해당하는 pdb가 아닙니다. 나는 가능한 빨리 새 빌드를 보내지 않을 것입니다. 충돌 덤프를 실행하는 데 약 1 주일이 걸리기 때문에 고객은 이미 "왜 아직 수정되지 않았습니까?" 단계. (다른 빌드를 보내면 동일한 코드가 아니라 문제가 해결되거나 관심있는 영역에서 추가 디버깅을하는 것이 좋을 것입니다.) 일부 코드는 수동으로 수행 할 수 있습니다. 많은 추측; 그게 우리가 현재하고있는 일입니다. 하지만 고통이 따르므로 자동화하는 방법이 있기를 바랍니다.
참조 http://stackoverflow.com/questions/744870/how-can-you-change-an-age-mismatched-pdb-to-match-properly 및 http://stackoverflow.com/questions/134866/windbg-dr-watson-minidump-requires-pdb-dll-installed-vers-installed-vers-for-vers- – wimh
다음 달에 그를 요리하게하십시오. 한편, 다른 '핫픽스'를 보내십시오. –
Wimmel의 링크가 나를 위해 일했습니다. 그것은 훌륭한 도구입니다. 당신이 당신의 코멘트를 대답한다면, 나는 그것을 받아 들일 것입니다. – Michael