2008-11-06 3 views
0

가끔씩 교착 상태가되는 멀티 스레드 Windows 응용 프로그램이 있습니다. 필연적으로 이것은 소프트웨어가 테스트 중일 때가 아니라 고객 시스템에서 발생합니다. 응용 프로그램의 현재 상태를 Windows Minidump로 가져 오는 가장 쉬운 방법은 무엇입니까? 또한 사용자가 응용 프로그램을 다시 시작할 수 있도록 응용 프로그램을 종료 할 수 있으면 시스템을 계속 사용할 수 있습니다.고객 컴퓨터에서 교착 상태가있는 Windows 응용 프로그램을 디버그하는 방법

답변

1

Vista에서는 작업 관리자에서 직접 덤프 파일을 만들 수 있습니다. 프로세스 탭에서 프로세스를 마우스 오른쪽 단추로 클릭하고 '덤프 파일 작성'을 선택하십시오.

Vista 이전에는 사용자가 없어도 작동하지만 사용자가 다른 소프트웨어를 설치하지 않고도 지침이 실제로 따라 가기 쉽기 때문에 ntsd 경로를 선호합니다.

2

How to use ADPlus to troubleshoot "hangs" and "crashes"과 유용한 블로그 게시물 Debugging Production Applications using ADPlus을 참조하십시오.

이 두 기사는 프로덕션 환경에서 미니 덤프를 생성하는 데 사용할 수있는 Windows 용 디버깅 도구와 함께 제공되는 VBScript 도구입니다 (나중에 개발 컴퓨터에서 WinDbg로로드 할 수 있음). ADPlus는 많은 기능과 옵션을 가지고 있으므로 환경에서 사용하기에 가장 좋은 방법을 찾기 위해 약간의 독서, 실험 및 연습이 필요할 수 있습니다.

+0

ADPlus의 문제는 최종 사용자 컴퓨터에 소프트웨어를 설치해야한다는 것입니다. 내가 가진 일반적인 시나리오는 Windows 서버에서 민감한 데이터와 중요한 비즈니스 서비스를 제공하는 원격 고객입니다. 그들은 추가 소프트웨어를 설치하는 것을 다소 꺼립니다. – davefiddes

+1

http://support.microsoft.com/kb/286350 : "ADPlus는 XCOPY 배포를 지원합니다 ... 또한 ADPlus에서는 사용자 지정 COM (구성 요소 개체 모델) 구성 요소를 시스템에 등록 할 필요가 없습니다. 잠긴 소프트웨어 구성이있는 프로덕션 서버에서 ADPlus를 사용할 수 있습니다. " 시도하지는 않았지만 플래시 드라이브에서 실행할 수도 있습니다. –

1

이 방법을 알고 있습니다. 그것은 내 기술이 약간 어색한 것입니다. 모든 Windows 2000 이상의 시스템에는 NTSD라는 기본 설치의 일부로 기본 명령 줄 디버거가 있습니다. 순간 내가 무엇을 실행한다 :

ntsd -pn MyApp.exe 

디버거 콘솔 내가 다음 디버거 콘솔에 다음을 입력 할 수 있습니다 나타납니다

.dump c:\my-deadlock.mdmp 
.kill 

내가 무엇을 찾고 있어요 조금 뭔가있다 조금 더 깨끗하고 고객에게 전자 메일을 보내기 만하면됩니다. 나는 그것이 drwtsn32.exe를 사용하여 크래시 덤프를 추출하고 응용 프로그램을 종료 할 수 있다고 어딘가에서 암시하는 것을 보았습니다.

편집 : 다소 명령을 간소화 할 수 있습니다 : 프로세스가 (예를 들어 긴 네트워크 타임 아웃)하지 말기 중단을 가지고 있으며, 당신이 과정을 원하는 경우

ntsd -pn MyApp.exe -c ".dump c:\my-deadlock.mdmp; .kill"

명령 .detach가 주어질 수있다 계속가.

+0

ntsd는 Vista에서 더 이상 기본적으로 설치되지 않습니다. –

관련 문제