어떤 메소드의 호출자 정보를 알고 싶을 때가 있다. 문제가 발생했는데 디버깅하기가 힘들 때, 이런 호출자 정보들을 로그 등에 기록해둔다면, 문제 해결에 유용하게 쓰일 수 있는 단서가 될 것이다.
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 |
[Tip]현재 메소드의 호출자 정보를 알고 싶을 때... (4) | 2007.02.26 |
[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 |
댓글을 달아 주세요
Java쪽에서도 Log를 남기는 컴포넌트가 있지요. 예를들어
; 라고 남긴다면, 해당 클래스및 메소드 위치, row 위치, 메시지등이
2007.02.26 12:21 [ ADDR : EDIT/ DEL : REPLY ]log.debug("aa"
기록에 남습니다.
로그라.. 필수죠. 개발자에겐. ^^
그렇죠..로그는 필수...하지만 비주얼 스튜디오같은 IDE를 써서 디버깅하지 못할 경우가 간혹 있을 수가 있으니까..
2007.02.27 13:25 신고 [ ADDR : EDIT/ DEL ]유용한 팁들이 많네요..
2007.03.26 00:26 [ ADDR : EDIT/ DEL : REPLY ]감사합니다..^^;; 아직은 많이 부족하지요..
2007.03.26 11:15 신고 [ ADDR : EDIT/ DEL ]