어떤 메소드의 호출자 정보를 알고 싶을 때가 있다. 문제가 발생했는데 디버깅하기가 힘들 때, 이런 호출자 정보들을 로그 등에 기록해둔다면, 문제 해결에 유용하게 쓰일 수 있는 단서가 될 것이다.
System.Diagnostics.StackFrame, System.Diagnostics.StackTrace 객체를 사용해서 호출자 정보를 얻을 수가 있다.
마지막에 return되는 값은 다음과 같이 생겼다. 이것이 바로 현재 메소드를 호출한 Caller Method이다.
* StackFrame 클래스를 생성할 때 주는 파라미터 - Integer - 를 조정해서, 각 호출 스택 상의 레벨을 모두 추적할 수도 있다.
* 간단하게 ToString()을 하면 저렇게 나오게 되지만, StackFrame 객체에는 GetFileName,
GetFileLineNumber 등의 더 자세한 정보를 알 수 있는 메소드들도 있다.
System.Diagnostics.StackFrame, System.Diagnostics.StackTrace 객체를 사용해서 호출자 정보를 얻을 수가 있다.
string
stackTraceString = null; System.Diagnostics.StackTrace
objStackTrace = new System.Diagnostics.StackTrace(new
System.Diagnostics.StackFrame(1)); stackTraceString = objStackTrace.ToString(); return stackTraceString; |
마지막에 return되는 값은 다음과 같이 생겼다. 이것이 바로 현재 메소드를 호출한 Caller Method이다.
at
StackFrameTest.Class3.class3Method(String param) |
* StackFrame 클래스를 생성할 때 주는 파라미터 - Integer - 를 조정해서, 각 호출 스택 상의 레벨을 모두 추적할 수도 있다.
* 간단하게 ToString()을 하면 저렇게 나오게 되지만, StackFrame 객체에는 GetFileName,
GetFileLineNumber 등의 더 자세한 정보를 알 수 있는 메소드들도 있다.
'C# & VB.NET' 카테고리의 다른 글
[Tip]메서드에서의 기본적인 Argument Validation (0) | 2008.03.09 |
---|---|
[Tip]VB.NET, C# Escape 문자 (0) | 2007.10.17 |
[Article]Singleton Pattern In C# (2) | 2007.02.12 |
[HowTo]using Blogger ATOM API in C# Part I - 블로그 리스트 가져오기 (2) | 2006.09.30 |
[Tip]String 체크(C#) (0) | 2006.09.09 |