문제

현재 프로덕션 환경에서 사용되는 C# .NET로 작성된 응용 프로그램이 있습니다. 분명히 릴리스 빌드가 사용됩니다.

불행히도 때때로 응용 프로그램은 특정 조건에서 잘못 행동하고 이유를 알 수 없습니다. 우리는 집에서 문제를 재현 할 수 없습니다. 그렇습니다. 더 많은 추적이 도움이 될 수 있지만 종종 더 많은 추적이 제정되어야한다는 사실을 알게됩니다.

정기적 인 라인별 라인, 비주얼 스튜디오 첨부 처리 유형 디버깅을 사용하여 설치를 디버깅하는 가장 좋은 방법은 무엇입니까? 고객 컴퓨터에 VS의 Express Edition을 설치하고 DLL을 디버그 버전으로 바꾸는 것입니까? PDBS와 특정 소스 파일을 전송하는 것으로 충분합니까? 더 좋은 방법이 있습니까? 최종 목표는 문제를 디버깅하는 환경과 같은 개발을하는 것입니다.

도움이 되었습니까?

해결책

원격 디버깅은 좋은 기능이지만, 달성하기 어려운 도메인 (자체 및 고객) 간의 2 방향 신뢰가 필요하기 때문에 생산 환경에서는 거의 사용되지 않을 수 있습니다 (두 회사의 관리자는 아이디어를 강력하게 반대 할 것입니다).

보다 도메인 간 원격 디버깅

그러나 응용 프로그램과 함께 PDB 파일을 보내는 것이 도움이됩니다. 고객에게 CLR 디버거를 사용하도록 요청할 수 있습니다 (dbgclr.exe) VS 디버거와 비교하여 몇 가지 제한 사항이 있지만 여전히 작업을 수행 할 수있는 디버거이며 .NET SDK의 일부입니다. CLR 디버거로 문제를 디버깅 할 수없는 경우 고객은 프로덕션 환경에서 VS의 시험판을 설치하고 원격 데스크톱 연결을 제공 할 수 있습니다 (관리자로 인해이를 수행 할 수있는 경우). 90 일의 시험 기간이 문제를 해결하기에 충분할 것이라고 생각합니다.

또한 고객이 가능한 한 물리적 조건에 맞게 CPU, 메모리 등의 수를 제한 (또는 증가)하는 것과 같은 테스트 환경을 구축하려고 시도 할 수 있습니다. 추가 타사 소프트웨어 또는 존재하지 않는 레지스트리 레코드가 프로그램에 영향을 줄 수 있다고 생각되면 고객에게 Windows의 가상 이미지를 작성하도록 요청하십시오.

그러나 내 경험은 .NET의 "비 프로덕션 불가능한"오류가 50%에서 여러 사용자 (교착 상태, 레이스 조건, 첫 승리/마지막 승리 시나리오에서 논리적 오해)의 동시 액세스로 인해 발생한다는 것입니다. 대부분의 경우 고객 시스템에 VS를 설치하더라도 디버깅 할 수없는 오류 (러시 시간이 아닌 시간에 실행하는 경우)는 다른 컴퓨터에서 동시에 2 개 이상을 실행해야하기 때문에 디버깅 할 수없는 오류입니다.

따라서 고객에게 디버깅을 제공 할 수있는 옵션을 찾고있는 동안 추적 및 모니터링 기능 향상을 위해 계속 노력하십시오. 추적 및 성능 카운터는 종종 생산 환경에서 유일한 친구입니다.

다른 팁

먼저, 앱과 함께 PDB를 배포했는지 확인하십시오 (PDB 릴리스가 충분합니다). 그런 다음 프로덕션 머신에 Visual Studio 원격 디버거를 설치하고 실행하면 로컬 컴퓨터에서 디버깅 할 수 있습니다. 배포 된 시스템의 앱의 PDB 파일은 원격 디버거가 어떤 종류의 동기화를 수행한다고 생각하지 않기 때문에 로컬 버전과 일치해야합니다.

상태 메시지와 로그 파일을 사용하여 최소한 오류를 일으키는 코드 줄을 식별하십시오.

Enterprise Library에서 예외 처리 응용 프로그램 블록을 사용하여 사용하여 오류 메시지를 이메일/ 데이터베이스/ 텍스트 파일 등에 로그인 할 수 있습니다. 오류의 원인을 정확히 파악할 수 있도록하십시오.

http://www.codeproject.com/kb/aspnet/exceptionhandling.aspx

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