태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.



Google
 
어떤 메소드의 호출자 정보를 알고 싶을 때가 있다. 문제가 발생했는데 디버깅하기가 힘들 때, 이런 호출자 정보들을 로그 등에 기록해둔다면, 문제 해결에 유용하게 쓰일 수 있는 단서가 될 것이다.

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 등의 더 자세한 정보를 알 수 있는 메소드들도 있다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
top

Trackback Address :: http://lazydeveloper.net/trackback/2567048 관련글 쓰기

  1. BlogIcon 카니스 2007/02/26 12:21 댓글주소 | 수정/삭제 | 댓글

    Java쪽에서도 Log를 남기는 컴포넌트가 있지요. 예를들어
    log.debug("aa";); 라고 남긴다면, 해당 클래스및 메소드 위치, row 위치, 메시지등이
    기록에 남습니다.
    로그라.. 필수죠. 개발자에겐. ^^

    • BlogIcon kkongchi 2007/02/27 13:25 댓글주소 | 수정/삭제

      그렇죠..로그는 필수...하지만 비주얼 스튜디오같은 IDE를 써서 디버깅하지 못할 경우가 간혹 있을 수가 있으니까..

  2. BlogIcon 미친병아리 2007/03/26 00:26 댓글주소 | 수정/삭제 | 댓글

    유용한 팁들이 많네요..

Write a comment


◀ PREV : [1] : ... [21] : [22] : [23] : [24] : [25] : [26] : [27] : [28] : [29] : ... [94] : NEXT ▶