WindBG는 충돌 덤프와 비교할 때 프로세스에 연결될 때 다른 통화 스택을 보여줍니다.

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

문제

관리 코드와 함께 기본 라이브러리를 사용할 때 발생하는 교착 상태를 분석하고 있습니다. 나는 WINDBG를 사용하여 공급 업체가 건물에서 문제를 관찰 할 수 있도록 덤프를 저장하려는 의도로 문제를 디버깅합니다.

문제가있는 프로세스에 첨부 할 때 호출 스택 전에 다음 메시지가 표시됩니다.

경고 : Unfind 정보를 사용할 수 없습니다. 다음 프레임이 잘못 될 수 있습니다.

프로세스에 직접 연결할 때 프레임은 실제로 정확해 보입니다. 그러나이 파일의 덤프를 가져간 다음 다른 컴퓨터의 WindBG에서 덤프를 열면 스택 프레임 중 하나가 다릅니다 (위의 오류도 표시됩니다.) 원래 코드 경로가 불가능 해 보였으므로 공급 업체가 혼란 스러웠습니다. .

나는 다음을 사용하여 덤프를 가져 갔다.

.dump /ma filename.dmp

이 불일치를 일으키는 원인은 무엇이며 덤프 파일의 통화 스택을 안정적으로 분석하기 위해 할 수있는 일이 있습니까? 내가 알아야 할 다른 허위 표현 데이터가있을 수 있습니까?

도움이 되었습니까?

해결책

PDB가 불일치 한 것 같습니다. 당신은 시도 했습니까? !chksym 그리고 !itoldyouso 명령? 예를 들어 보자 버그 슬레이어 기사

시도해야 할 또 다른 것은입니다 !sym noisy 어떤 PDB 파일이로드되었는지 표시해야합니다.

또한보십시오 MSDN 블로그

다른 팁

경고는 디버거가 스택의 하나 이상의 주소를 기존 모듈 정보와 연결할 수 없다고 알려줍니다. CLR에 의해 관리 된 코드가 즉석에서 편집되므로 코드에 대한 해당 모듈이 없으므로 경고가 없습니다.

SOS 명령! Clrstack은 CLR의 필요한 정보를 가지고 있으며 의미있는 스택을 표시합니다 (또는 적어도 경고없이). 기본 스택 덤프 명령을 사용하는 경우 관리 코드에 대한 경고가 표시됩니다.

다가오는 책 Advanced .NET 디버깅에는 추가 세부 정보가 있습니다. 보다 http://advanceddotnetdebugging.com/

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