2009-10-15 3 views
1

이 체크 아웃 프로그램은 내 직장에서 체크인 용 컴퓨터에서 데이터를 가져와 데이터베이스에 저장하기 만하지만 갑자기 목요일에 오류가보고되기 시작했습니다. 하루 중 임의의 시간에 오류가 감지되면 프로그램을 실행하지만 아무 일도 발생하지 않으므로 5-10 분마다 디버깅하여 오류가 발생하면 어떻게되는지보고 어떻게 해결할 수 있습니까? 이 작업을 수행?디버그를 예약하려면 어떻게해야합니까?

답변

2

로깅은 친구입니다. 로깅을 많이 추가하십시오 (내장 추적 추적을 사용하거나 log4net과 같은 일부 프레임 워크를 사용하십시오). 다른 로그 레벨을 사용하여 로그 아웃하는 양을 제어하십시오. verbose 레벨에서 중요한 메소드를 입력하고 종료 할 때 로그 할 수 있으며, 입력 인수와 리턴 값을 로깅 할 수 있습니다. catch 블록에 로그인하십시오. 그런 다음 다음 오류가보고 된 후 로그 파일을 분석하십시오.

+0

감사합니다. – Luiscencio

2

현재이 응용 프로그램에 어떤 종류의 오류 기록이 있습니까? 그렇다면 Log4Net 도구와 같이 포괄적 인 응용 프로그램 로깅을 추가 하시겠습니까? 또는 웹 응용 프로그램 인 경우 ELMAH 도구입니까?

이 방법을 사용하면 스택 추적과 같은 세부 정보와 함께 발생하는 모든 오류를 기록하여 문제를 추적 할 수 있습니다.

0

일부의 생각 :

당신이 꺼내 수있는 충돌 미니 덤프가 있는지 확인하기 위해 서버 이벤트 로그를 확인하십시오. 이것들은 프로그램이 추락했을 때 일어난 일에 대해 많은 것을 알려줍니다 (호출 스택 등).

프로그램을 실행하고 실패한 것을 감지 할 수있는 래퍼 프로그램을 작성한 다음 그 순간 서버 상태의 스냅 샷을 작성하여 필요한 데이터로 작업을 재실행 할 수 있도록 반복 가능하도록하십시오 디버거에서 충돌이 발생합니다.

또는 로깅로드를 추가하십시오. PostSharp를 사용하여 입력 및 종료하는 모든 메소드를 알려주는 추적을 추가 할 수 있으므로 실패했을 때 실행중인 메소드를 쉽게 판별 할 수 있습니다.

그리고 견고성 코드를 추가 할 수 있습니다. 종교적으로 널 (null) 등을 확인하십시오. 어떤 문제가 해결되었는지 알지 못해도 문제를 해결할 수 있습니다.

프로그램이 너무 크지 않으면 구식이고 데스크 체크 (코드의 인쇄물 읽기)가 버그를 유발할 수 있습니다.

또 다른 접근법 (좀 더 실험적으로)은 프로그램이 계속 실행되도록 수정하여 디버거에 고정시키고 예외가 발생할 때까지 그대로 둘 수 있습니다. (루프를 실행하고 트리거 파일을 새로 고칠 때까지 기다렸다가 정상 프로세스를 시작할 수 있습니다. 약 5 줄의 코드로 충분할 것입니다.)

관련 문제