2010-05-13 3 views
6

스택 추적에서 스택 추적의 한 프레임에 대해서만 "줄 0"이 표시되는 이유는 무엇입니까??잘못된 줄 번호가 포함 된 스택 추적

예 :

... 
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() 
at My.LibraryA.Some.Method():line 16 
at My.LibraryB.Some.OtherMethod():line 0 
at My.LibraryB.Some.Method():line 22 
at My.LibraryA.Some.Method():line 10 

배경 :

I 예외에 실패하고, 로그 파일에 스택 트레이스를 기록하는 애플리케이션이있다. 응용 프로그램이 빌드 될 때 모든 어셈블리는 전체 디버그 정보 (프로젝트 속성 -> 빌드 -> 고급 -> 디버그 정보 -> 전체)로 컴파일되었으므로 PDB 파일이 생성되었습니다. 오류의 원인을 진단 할 수 있도록 PDB 파일을 응용 프로그램의 bin 디렉터리에 저장하고 예외를 재현했습니다. 각 스택 프레임의 모든 라인 번호는 올바른 것으로 보이지만 "라인 0"을 소스로 표시하는 것은 예외입니다.

+0

최적화가 활성화되어 컴파일 되었습니까? 온/오프 및 디버그 정보 온/오프의 최적화는 직각 스위치라고 기억하십시오. 그렇다면 지터가 인라인 또는 다른 최적화를 선택하여 원래 코드가있는 곳을 찾기가 어려울 수 있습니다. –

+0

@ 에릭 : 그렇습니다. 실제 줄 번호를 알아내는 방법이 있습니까? – adrianbanks

+1

예. 최적화 기능을 해제하고 컴파일하십시오. –

답변

3

이것은 실제로 에릭이 제안한 방법에 따라 인라인되었습니다.

릴리스 빌드에서 컴파일 할 때만 원래의 오류를 로컬에서 재현 할 수있었습니다. PDB가 있었기 때문에 코드를 단계별로 실행하여 문제를 찾을 수있었습니다.

관련 문제