2013-05-09 3 views
0

내가VB System.ObjectDisposedException

때로는 등 집에서 만든 DLL의, 소켓 통신, 멀티 스레딩을 많이 포함 VB 2008 년에 기록 된 거대한 프로그램을,,,가, 난데없이, 프로그램 2008 프로그램 충돌 이벤트 뷰어에서 다음과 같은 세부 사항 충돌 : CLR20r3 없음 CMS.exe 1.0.0.0 5177cc90 mscorlib에 2.0.0.0 4a275af7 System.ObjectDisposedException

문제점을 찾기 위해 숙제를했지만 정확한 위치를 정확히 알 수 없습니다 (이 어셈블리에는 수천 줄의 코드가 있습니다). main()에서 UnHandledException을 잡기 위해 Handler를 두었지만, 전혀 실행되지 않는 것 같습니다.

내 질문은, 어떻게 외부 VS이 디버깅 할 수 있습니까? 이 소프트웨어는 고객의 창고에있는 산업용 산업용 PC에 설치되므로 명백한 이유로 VS를 설치할 수 없습니다.

모든 힌트는 정말 감사하겠습니다.

당신의 소중한 시간 내 주셔서 감사하고

+0

내 Crystal ball에 Application.UnhandledException 이벤트 핸들러를 작성했다고 나와 있습니다. 잘못된 것, AppDomain.CurrentDomain.UnhandledException이 필요합니다. 우리가이 btw에서 추측하게 만드는 것은 무의미하며 항상 스 니펫을 게시하십시오. –

+0

공공 하위 주() 희미한 currentDomain 응용 프로그램 도메인 = AppDomain.CurrentDomain AddHandler에 currentDomain.UnhandledException, AddressOf를가 MyHandler으로 .... 개인 서브가 MyHandler (개체로 ByVal의 보낸 사람, UnhandledExceptionEventArgs으로 ByVal의 인수) 예외로 희미한 전자 = DirectCast (args.ExceptionObject, 예외) m_eLog.WriteEntry ("X-Actim UnHandledException :"& e.ToString) 응답 에 대한 종료 하위 – Dominic

답변

0

System.Windows.Forms.Application.ThreadExceptionAppDomain.CurrentDomain.UnhandledException이 케이스의 80 %에 트릭을 취급 도움 (슬프게도, COM 오류와 같은 일부 오류가 잡히지 않을 것이다).

예를 들어 로그 파일에 예외 메시지와 예외 스택 추적을 덤프 할 수 있습니다. pdb 파일을 응용 프로그램에 제공하면 StackTrace에서 라인 번호를 볼 수 있으므로 디버그 할 수 있습니다.

+0

감사 AppDomain.UnhandledException 처리기도에서 일어날 수있는 예외를 잡은합니까 DLL을 참조하십시오? 시동시 소프트웨어에 의해로드 된 약 50 개의 DLL이 있습니다. 나는 전체 솔루션의 진입 점인 main()에 핸들러를 두었습니다. 예외 스택 추적을 어떻게 덤프 할 수 있습니까? – Dominic

+0

예. 응용 프로그램이나로드 된 모든 동적 라이브러리 (NB : COM 구성 요소는 응용 프로그램에서 직접 처리하지 않음)에서 포착 한 예외를 catch합니다. "Ex"라고 가정하면 예외입니다. Ex.Message, ex.StackTrace, ex.Source 및 ex.InnerException (예외가 여러 개있는 경우)에 대해 동일한 작업을 로그에 기록해야합니다. – Jamby

+0

이해할 수없는 것은 예외 처리기가 절대로 필요하지 않습니다. 실행. 이벤트 뷰어에서 추적 한 경우에만 응용 프로그램이 손상되었습니다. 왜 내 처리기가 실행되지 않는지에 대한 아이디어가 있습니까 ?? 아마도 예외가 많은 DLL이로드 된 (모든 .Net 어셈블리) 중 하나에서 오는 것이라고 생각했지만 어쨌든이 DLL을 잡아야한다고합니다. 나는 정말로 혼란 스럽다. – Dominic