2012-02-13 7 views
-4

예외의 원인을 추적하려고합니다. 스택 추적의 마지막 줄은 발생 위치입니다. 그렇지 않은 경우 스택 추적에 언급 된 다른 줄에 중단 점을 설정해야합니다.스택 추적 읽기

예를 들어, 두 번째에서 마지막 행까지 예외가 발생하면 (위에서 두 번째로) 스택 추적이이 줄에서 중지되지 않는 이유는 무엇입니까? 대신에 하나의 추가 선을 인쇄합니다. 이는 속이는 것입니다. 런타임에는 예외가 스택 추적의 마지막 줄에 언급 된이 파일에 표시됩니다. 그러나 스택 추적에서 언급 한 두 번째 줄부터 마지막 ​​줄에 중단 점을 설정하면 문제가 무엇인지 명확 해집니다.

+6

스택 추적 예제를 게시하고 간략하게 정보를 잘못 표시 한 부분을 지적하십시오. – Yuck

답변

1

디버거가 예외가 발생할 때가는 곳을 한 후 약간 다른 스택 추적을 볼 수 있습니다 어디 3 ​​가지 경우를 생각할 수 :

  1. 끝낼 수 릴리스 모드에서 내장 된 어셈블리가 최적화 된 코드중인 당신은 디버깅을하고있는 IL을 정확히 나타내지 않을 수도 있습니다.
  2. try {do();} catch (예외 e) {throw e; } 스택 추적을 변경합니다.
  3. "내 코드"가 활성화되어 있고 소스 코드가있는 외부 코드에서 예외가 발생하면 디버거가 멈추고 자하는 위치와 약간 다른 스택 추적을 얻을 수 있습니다.