2010-06-22 6 views
3

.NET 코드에서 응용 프로그램 외부에서 어떤 예외가 발견되었는지 찾는 방법이 있습니까?프로덕션 컴퓨터에서 .NET에서 catch 된 예외를 탐지하는 방법은 무엇입니까?

3D 파티 API가 예외를 발생시키고이를 억제한다는 것을 알게되었습니다 (성능 카운터가 올라가는 것을 볼 수 있습니다).

하지만 그것은 추적 (나는 sysinternals dbgView 시도) 보여줍니다.

어떤 도구가 캐치 된 예외를 표시 할 수 있습니까?

+0

FYI ... 일부 정상적인 메소드 (예 : Response.End)는 예외를 발생 시키므로 perfmon의 증가 예외 수는 항상 나쁜 것은 아닙니다. – David

+0

나는 당신의 요지를 얻지 못한다. 나는 그것이 나쁘지 않다는데 동의한다. 난 단지 API devs의 얼굴에 무엇이 있는지 알아야하고 도움이되지 않기 때문에 밀어 넣는다. 그리고 그 예외는 내가 쓸모없는 5 주간의 mylife .....를 보냈던 전체 앱을 만든다. –

답변

2

이 상황에서 항상 사용하는 도구는 WinDBG입니다. 프로세스의 bitness에 따라 32bit version 또는 64bit version을 다운로드하십시오.

최신 버전은 직접 다운로드 링크가 없으므로 (SDK에서만 사용 가능) '이전 버전'섹션으로 건너 뛰고 최신 버전을 다운로드하십시오.

로드 WinDBG로 설치하고 다음을 수행 후 :

  1. 파일 ->
  2. 대상 프로세스를 선택하고 클릭 '열기'콘솔에서
  3. 엔터 다음 프로세스 (F6)에 부착 : 는
    • .loadby sos mscorwks
    • sxe clr
    • 의 (b 디버거를 알려줍니다 (이는 .NET 디버거 확장을로드) 관리 예외에 reak)
    • g (GO!)
  4. 실행 과정 예외가 발생할 때까지.
  5. 디버거가 중단되며 예외 정보를 보려면 !pe을 입력하십시오.

!clrstack 명령은 관리되는 스택을 보거나 기본 호출을 포함하도록 !dumpstack 시도하는 것이 좋습니다.

예외가 발생해도 디버거가 멈추는 경우보고자하는 것을 얻을 때까지 'g'를 다시 누르십시오.

!help 명령은 사용 가능한 모든 .NET 확장을 표시하며, 더 깊이 파고 싶으면 Tess Ferrandez's blog을 적극 권장합니다.

1

Visual Studio에서 원격 디버거를 사용하여 프로세스에 연결할 수 있으며 예외가 발생하면 중단되도록 구성 할 수 있습니까?

+0

잘 모르겠습니다. 릴리스 코드이며 3D party API 코드의 어딘가에 예외가 발생합니다. –

관련 문제