2012-07-16 1 views
3

내 asp.net 응용 프로그램 중 하나의 사용이 상당히 늘어났습니다. 매우 드문 두 가지 이상한 문제가 발생하고 있으며이를 재현 할 수 없습니다.재생할 수없는 버그를 디버깅하는 방법은 무엇입니까?

이러한 문제를 디버그하고 문제를 해결하는 방법에 관해서는 분실했습니다. 내 영문 페이지의

하나는 !IsPostBack에 0 세션 상태 값을 재설정 (true입니다) :

는 다음 두 가지 예입니다. 그러나 특정 위치에있는 내 사용자 중 한 명이 포스트 백이 아니며 세션 상태 값이 자신의 랩톱에서 재설정되지 않을 때 해당 페이지에 자주 올 것입니다. (이 문장은 디버깅 모드에서 실행되는 방식이 아닌 앱의 동작 방식을 기반으로합니다.)하지만 동일한 브라우저를 사용하여 랩톱에서 앱을 실행하는 옆에 앉아있을 때 코드가 작동하고 세션 상태가 재설정됩니다 동시에 같은 인터넷 연결에 있습니다. 그리고이 사용자가 더 나은 인터넷 연결을 사용하는 집에서 랩톱으로 앱을 실행하면 자주 문제가 발생하지 않습니다.

내 앱의 aspx 페이지 중 하나가 데이터를 DB에 저장하는 코드를 실행 한 후 server.transfer를 실행합니다. 거의 모든 시간에 server.transfer는 텍스트 박스에 기본값 (예 : !isPostback==True이어야 함)을 포함하지만 텍스트 상자에 이전 값이 들어있는 시간의 약 1 %를 포함합니다. 데이터가 저장 되었기 때문에 서버로의 왕복이있었습니다. 이 문제는 동일한 작업을 수행하는 동일한 사용자가 동일한 브라우저를 사용하여 동일한 PC에서 발생합니다. 따라서 99 %의 시간이 올바르게 작동하고 1 %의 시간이 똑같은 일을 제대로 수행하지 못합니다.

무작위로 발생하는 것으로 보이는 경우 어떻게 이러한 문제의 원인을 파악하기 시작합니까?

인터넷 연결의 품질이 변하는 하나의 변수이기 때문에 의심 스럽지만 그 정보가 어떻게 도움이됩니까?

내 응용 프로그램을 디버그 모드로 실행하여 이러한 문제 중 하나를 디버그 할 수없는 것 같습니다.

나는 Asp .Net 3.5, C# 3.5을 사용하며 앱은 IE 6-8에서 실행됩니다. (호환 모드에서 IE 8)

+3

예외가 발생하고 실제 파일에 예외를 로깅하지 않으면 어디에서/어떤 일이 발생했는지 판단하기가 매우 어려울 수 있습니다. – JonH

+0

부하와 문제를 연관 지을 수 있습니까? 세션 상태에는 확장 성 문제가있을 수 있지만로드가 문제인 사용자에게만 영향을주는 것처럼 보입니다. 문제가 사용자가 잠시 동안 다른 곳에서 일하면 어쩌면 오프사이드에 초대하여 도넛을 먹고 일하는 것을 지켜 볼 수 있습니다. 그날의 특정 시간대가 더 일반적입니까? 어떻게 든 패턴을 찾아야합니다. – n8wrl

+0

인터넷 연결 속도가 느리거나 불안정한 경우 불안정한 상태를 초래하는 여러 번의 클릭을 수행하고 참을성이 없어 질 수 있습니까? 처리가 완료 될 때까지 더 많은 클릭이 이벤트를 발생시키지 못하도록 약간의 자바 스크립트를 추가 할 수도 있습니다. 또한, 스피너와 같이 어떤 일이 일어나고 있음을 나타내는 일종의 가시적 표시 아이템을 추가하십시오. – JamieSee

답변

8

문제가 발생한 코드에 로깅을 추가합니다. 그런 다음 문제가있는 사용자에게 문제가 발생했을 때 시간을 기록해 둡니다. 로그와 대략적인 시간을 확인한 후 로그에 붓고 올바른 방향으로 향하는 것이 있는지 확인할 수 있습니다. 또한 서버의 IIS 및 이벤트 로그를 살펴볼 것입니다.

+2

그는 사용자에게 그에게 시간을 말할 필요조차 없으며, 자신의 단언 중 하나가 위반 될 때마다 기록 할 수 있습니다. – Voo

2

느린 연결을 시뮬레이트하기 위해 Firefox Throttle 플러그인을 설치할 수 있습니다. 많은 일들이 ASP.NET에서 느린 페이지로드로 발생할 수 있습니다. 페이지가 완전히로드되지 않았지만 항목을 클릭 할 수있는 경우 ASP.NET은 이벤트 유효성 검사와 관련하여 정말 화를 낼 수 있습니다 ...

또한 응용 프로그램에서 문제 영역을 기록하고 추적하는 것이 좋습니다. 그런 다음이를 IIS 요청 로그와 상호 연관시켜 언제 어떤 일이 발생했는지에 대한 정확한 그림을 얻을 수 있습니다.

0

Session State에 문제가있는 것 같습니다. 기본적으로 ASP.NET은 서버 메모리를 사용하여 값을 저장하는 InProc 세션 상태 모드를 사용합니다. 많은 경우,이 손실되거나 재설정 될 수 있습니다 (애플 리케이션 풀 재활용). SQLServer Session State으로 전환하면 문제를 해결하는 데 도움이 될 수 있습니다.

관련 문제