• 카테고리
    • 전체 글

    • 카테고리1
    • 카테고리2
    • 카테고리3
    • 카테고리4
  • 태그
  • 방명록

Stack Trace 하는 방법

기술자료/.NET 2011. 4. 6. 11:27

.NET에서 Debug 관련해서 할 때, Visual Studo 를 사용하다 보면, 현재 실행 위치를 기반으로 실행 순서를 확인할 수 있습니다. Call Stack 이라는 이름의 창으로 그 안으로 보면, 어느 부분에서 어떻게 실행되었는지, 해당 코드는 어떤 파일이며, 몇번째 라인에서 실행했는지 등을 확인 할 수 있습니다.

그림에 있는 Call Stack 까지는 아니지만, 최소한 어떤 함수에서 어떤 함수로 불렸는지 확인하는 방법이 있습니다.이 때 사용하는 것이, System.Diagnostics.StackTrace 라는 클래스 입니다.

이 클래스를 생성한 뒤, GetFrames() 라는 함수를 부르면, 그 메소드를 호출한 위치의 Thread를 기준으로 Call Stack 내용을 끄집어 낼 수 있습니다. 이 때 가져오는 형태를 StackFrame이라고 하는데, 이것을 Array 형태로 가져옵니다.

이 Array를 열어 GetMethed() 한 뒤, Name을 끄집어 내면 해당 실행 모듈의 이름을 꺼낼 수 있습니다.
위의 Flow를 이용하여 간단한 소스를 나타내면 다음과 같습니다.


System.Diagnostics.StackTrace stacks = new System.Diagnostics.StackTrace(); 
System.Diagnostics.StackFrame[] frames = stacks.GetFrames(); 
foreach (System.Diagnostics.StackFrame frame in frames) 
{ 
      System.Diagnostics.Debug.Write(frame.GetMethod().Name); 
      System.Diagnostics.Debug.Write(" <- " ); 
} 
System.Diagnostics.Debug.WriteLine(" ");

그러면 현재 호출된 메소드를 기준으로 표시됩니다.
필요하면 Method에 개체를 이용해서 Assembly를 빼거나, 기타 소스 코드들을 따라 들어가면, 원하는 정보들을 쉽게 뽑아낼 수 있을 것입니다.

728x90
블로그 이미지

하인도1

[하인드/하인도/인도짱 의 홈페이지] 저만의 공간입니다. 다양한 소재들을 나열하는 아주 단순 무식한 홈페이지 입니다. 다양한 문서 자료도 있겠지만, 저의 푸념들도 있답니다.

250x250

블로그 내에 소스 코드 삽입 이사온 기념 스킨도... RSS 전문 기능 비활성화 관련. 스킨 바꾸어 보았습니다. 서버 파일 정리 좀 했습니다.

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Visual Studio moss Buscuit 인터파크 Tutorial 협업 지름신 2010 me2sms SharePoint 비스킷 me2photo 개발환경 블로그 친구 수 오류 MOSS 2007 me2dayzm java twi2me e-book 것 불만 Google Apps Engine 좀 WSS windows 매뉴얼 Azure

  • Total :
  • Today :
  • Yesterday :

Copyright © 2015-2025 Socialdev. All Rights Reserved.

Copyright © 2015-2025 Socialdev. All Rights Reserved.

티스토리툴바