2009-07-28 2 views
1

상당히 큰 WPF 응용 프로그램을 상속 받았으며 상당 부분 응용 프로그램 추적을 생성해야합니다. 프로젝트의 복잡성 때문에 가능한 경우 코드 기반을 변경하지 않고이 작업을 수행하려고합니다. 나는 주로 스택 델타를 알아야한다. 즉 함수 호출이나 리턴이 발생할 때이다. 코드 변경이 없으면이 추적을 얻을 수있는 도구 또는 방법이 있습니까? Trace 호출을 코드에 추가하는 도구를 작성하지 않고도이 작업을 수행 할 수 있습니까?도구를 추적하는 도구?

특정 함수 호출로 제한된 경우, 나는 그와 함께 살 수 있다고 생각합니다. 그 시점에서 호출 스택을 기록하는 사용자 정의 스텁 dll 함수 호출을 리디렉션하려면 가져 오기 테이블을 다시 작성하여 Win32 API 호출을 위해 할 수있는 도구가 있습니다. .NET에서 'out of the box'로 작동하는 도구가 없다면 FAQ 나 .NET DLL 연결이 어떻게 작동하는지 (수출 테이블, 썽크 등)에 대해 알고있는 사람이 있습니까?

답변

1

유용한 답변을 얻으려면 을 알고 있어야합니다. 왜 응용 프로그램 추적이 필요합니다. (아키텍처 수준에서 일을 이해) 분석 목적

  1. :의

    내가 생각할 수있는 하나. 이 경우 적합한 코드는 NDepend과 같은 정적 코드 분석 도구입니다.

  2. 로깅 목적으로 (다시 한 번 구체적으로 입구와 출구를 알아야하는 이유는 무엇입니까?). 이 경우 소스를 변경하지 않으려 고하기 때문에 실행 직전에 측면을 주입하는 aspect orientation 프레임 워크가 아마도 사용자가 찾고있는 것일 것입니다 (예 : PostSharp).

  3. 성능 분석을 위해. 이 경우 Visual Studio와 함께 제공되는 도구 또는 ANTS Profiler과 같은 상용 도구를 사용하십시오.

다른 AOP 솔루션은이 차단 메서드 호출에 적합 할 것이다 존재 (예를 들어, Spring.NET) 그러나 이들은 이미 당신이 관심이없는 걸 말한 (상대적으로 작은이기는하지만) 소스로 변경해야

+0

응용 프로그램의 크기가 크기 때문에 아키텍처 분석을 찾고 있습니다. 나는 제안 NDepend, 감사를 조사 할 것이다 :) –

1

PostSharp Core을 사용하여 메서드 호출을 삽입 할 수 있습니다 (Trace 또는 무엇이든 원하는대로). 즉각적인 해결책은 아닙니다.

2

Runtime Flow (나에 의해 개발 됨)은 코드 기반을 변경하지 않고 .NET 응용 프로그램을 자동으로 추적합니다.

0

Visual Studio IDE에서는 연결된 모든 추적 수신기에 문자열을 출력하는 "중단 점"을 정의 할 수 있습니다. 이 문자열은 범위 내 변수의 수에 관계없이 구성 할 수 있습니다. 기본적으로 이런 종류의 중단 점은 실행을 일시 중지하지 않습니다. 추적 파일이 필요한 경우 구성 파일을 사용하여 다른 추적 수신기를 연결할 수 있습니다.

이러한 중단 점 정의는 솔루션의 IDE 상태의 일부로 저장되므로 매번 설정할 필요가 없습니다.

관련 문제