2017-11-25 14 views
0

내가 WinDbg를 함께 크래쉬 덤프 내가 !locks 명령을 사용할 때, 나는 3 개 스레드의 출력을 얻을 열어 각자가 "잠금 수"가 0 = 0잠금 - =이

이 사람들을 의미합니다 모든 스레드는 '잠금 수를'이 쓰레드는 (내가 이해 한 것에서) 어떤 객체도 잠그지 않는다. 이 시점부터 어떻게 처리해야합니까 근본 원인을 조사 할 수 있습니까? (성능 시스템 오류)

디버깅하는 코드에는 관리되는 코드와 관리되지 않는 코드가 포함되어 있습니다.

+0

Google "코드 프로파일 링" – mustaccio

+0

어떤 문제를 디버그하려고합니까? 잠깐만 요? 잠금이 응용 프로그램 중지의 유일한 원인은 아닙니다. – kvr

답변

1

스레드의 잠금 개수가 0이면 아무도 스레드에서 동기화하지 못합니다. 스레드가 객체를 잠그지 않았 음을 의미하지는 않습니다. 개체를 잠근 경우 해당 정보 (예 : 중요 섹션, 뮤텍스 또는 세마포)가 해당 개체에 저장됩니다.

한편으로는 교착 상태가 발생했다고 가정 할 수있는 자물쇠를 찾고 있습니다. 반면에 당신은 성능을 언급합니다. 이 두 가지를 구분하는 것은 아주 쉽습니다. 교착 상태가 발생하면 더 이상 결과를 얻지 못하고 프로세스의 CPU 사용량이 0 %로 떨어지는 경우가 있습니다. 성능 문제가 있으면 여전히 결과를 얻을 수 있지만 더 오래 기다려야합니다.

크래시 덤프 파일은 교착 상태 문제를 해결하는 데 도움이 될 수 있지만 특히 크래시 덤프 파일이 하나 뿐인 경우 성능 문제를 해결하는 데 거의 도움이되지 않습니다.

성능 문제를 분석하려면 성능 프로파일 러를 사용해야합니다.