어떻게 행 번호가 오류를 일으켰는지 표시하고 .NET이 .exes를 컴파일하는 방식으로 이것이 가능합니까?예외 처리에 행 번호 표시하기
만약 거기에 자동으로 Exception.Message에 대한 찾아내는 하위 표시 할 수 있습니까?
try
{
int x = textbox1.Text;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
어떻게 행 번호가 오류를 일으켰는지 표시하고 .NET이 .exes를 컴파일하는 방식으로 이것이 가능합니까?예외 처리에 행 번호 표시하기
만약 거기에 자동으로 Exception.Message에 대한 찾아내는 하위 표시 할 수 있습니까?
try
{
int x = textbox1.Text;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
전체 스택 추적을 얻으려면 ex.ToString()
을 사용하십시오.
릴리스 모드에서도 디버깅 기호 (.pdb 파일)로 컴파일해야 줄 번호를 가져올 수 있습니다 (프로젝트 빌드 속성의 옵션).
+1 PDB 파일 및 행 번호 –
웹 프로젝트이고 서버에 pdbs를 배포하려는 경우 패키지/게시 웹 섹션의 프로젝트 옵션에서 "생성 된 디버그 심볼 제외"를 선택 해제하십시오. –
누군가 "디버깅 기호로 컴파일"에 대한 설명을 제공 할 수 있습니까? 내 프로젝트에 'DEBUG 상수 정의', 'TRACE 상수 정의'및 '디버그 정보 : 전체'가 있으며 행 번호가 표시되지 않습니다. MSDN에서는 속성 페이지의 왼쪽 창에서 빌드 탭을 클릭 한 다음 사용하려는 컴파일러 설정에 대한 확인란을 선택하고 사용하지 않으려는 설정의 확인란 선택을 취소합니다. 도움이됩니다. – omJohn8372
'StackTrace'을 사용하고 .pdb 파일을 작업 디렉터리에 포함하면 스택 추적에 줄 번호가 포함되어야합니다.
더 자세한 정보가 필요하면, 당신은 (여기 당신이 시도하기위한 몇 가지 코드)를 System.Diagnostics.StackTrace 클래스를 사용할 수 있습니다 e.StackTrace
을 사용하여, 주어진 예외의 스택 트레이스를 보려면 :
try
{
throw new Exception();
}
catch (Exception ex)
{
//Get a StackTrace object for the exception
StackTrace st = new StackTrace(ex, true);
//Get the first stack frame
StackFrame frame = st.GetFrame(0);
//Get the file name
string fileName = frame.GetFileName();
//Get the method name
string methodName = frame.GetMethod().Name;
//Get the line number from the stack frame
int line = frame.GetFileLineNumber();
//Get the column number
int col = frame.GetFileColumnNumber();
}
가 어셈블리에 사용할 수있는 pdb 파일이있는 경우에만 작동합니다. 프로젝트 속성 - 빌드 탭 - 고급 - 디버그 정보 선택을보고 pdb 파일이 있는지 확인하십시오.
첫 번째 스택 프레임을 얻는 이유는 무엇입니까? 마지막 스택 프레임에 관심이 있습니까? 즉 StackFrame frame = st.GetFrame (st.FrameCount - 1) –
WCF 웹 서비스에서이 사용하여 시도한 및 줄 반환합니다 항상 0입니다. 이것은 .pdb 파일이있는 디버그 모드입니다. –
string lineNumber=e.StackTrace.Substring(e.StackTrace.Length - 7, 7);
이 코드는 어떻게 컴파일됩니까? –
그것은 단지 예제로 보여주기 위해 만든 것입니다. – Crash893
중복 가능 http://stackoverflow.com/questions/8338495/how-to-get-error-line-number-of-code-using-try-catch –