이제 Windows에서 DTrace를 사용할 수 있습니다.
다음 Windows 10 기능 업데이트(19H1, 2019년 4월 업데이트, 버전 1903)에는 널리 사용되는 오픈 소스 디버깅 및 진단 도구인 DTrace에 대한 지원이 포함됩니다. 원래 Solaris용으로 제작되었으며 Linux, FreeBSD, NetBSD 및 macOS에서 사용할 수 있게 되었습니다. Microsoft는 이를 Windows로 이식했습니다.
DTrace는 관리자 또는 개발자가 사용자 또는 커널 모드에서 시스템을 실시간으로 볼 수 있도록 하는 동적 추적 프레임워크입니다. DTrace에는 추적 지점을 동적으로 삽입할 수 있는 C 스타일의 높은 수준의 강력한 프로그래밍 언어가 있습니다. 동적으로 삽입된 이러한 추적 지점을 사용하여 조건 또는 오류를 필터링하고 잠금 패턴을 분석하는 코드를 작성하고 교착 상태를 감지하는 등의 작업을 수행할 수 있습니다.
Windows에서 DTrace는 정적이며 런타임에 추적 지점을 프로그래밍 방식으로 삽입하는 기능을 제공하지 않는 Windows용 이벤트 추적(ETW)을 확장합니다.
dtrace.sys에서 사용하는 모든 API와 기능은 문서화된 호출입니다.
Microsoft는 다양한 시스템 모니터링 역할을 수행할 수 있는 Windows 10용 특수 드라이버를 구현했습니다. 드라이버는 Windows 10 버전 1903에 포함됩니다. 또한 DTrace는 현재 커널 디버거가 활성화된 상태에서 Windows를 시작해야 합니다.
이식된 DTrace 도구의 소스 코드는 GitHub에서 사용할 수 있습니다. 페이지를 방문하십시오 "Windows의 DTrace"를 보려면 GitHub의 OpenDTrace 프로젝트 아래에 있습니다.
Windows 10에서 DTrace 설정
기능을 사용하기 위한 전제 조건
- 윈도우 10 내부자 빌드 18342 또는 더 높게
- 에서만 사용 가능 x64 Windows 및 64비트 프로세스에 대한 추적 정보 캡처
-
Windows 참가자 프로그램 ~이다 활성화 그리고 구성된 유효한 Windows 참가자 계정으로.
- 자세한 내용은 설정->업데이트 및 보안->Windows 참가자 프로그램을 방문하십시오.
지침:
-
BCD 구성 집합:
- bcdedit / dtrace 설정
- 참고로 새 Insider 빌드로 업그레이드하는 경우 bcdedit 옵션을 다시 설정해야 합니다.
-
다운로드 에서 DTrace 패키지를 설치합니다. 다운로드 센터.
- 이렇게 하면 DTrace가 작동하는 데 필요한 사용자 모드 구성 요소, 드라이버 및 주문형 추가 기능 패키지가 설치됩니다.
- 선택 사항: 업데이트 PATH 환경 변수 포함하는 C:\프로그램 파일\DTrace
- set PATH=%PATH%;"C:\Program Files\DTrace"
- 설정 기호 경로
- 기호를 로컬로 캐싱하기 위한 새 디렉터리를 만듭니다. 예: mkdir c:\symbols
- 세트 _NT_SYMBOL_PATH=srv*C:\symbols*http://msdl.microsoft.com/download/symbols
- DTrace는 기호 서버에서 필요한 기호를 자동으로 다운로드하고 로컬 경로에 캐시합니다.
-
선택 과목:커널 디버거 설정 대상 머신에 연결(MSDN 링크). 이것은 오직 FBT 또는 다른 공급자를 사용하여 커널 이벤트를 추적하려는 경우 필요합니다.
- 커널 디버거를 설정하려면 C:(활성화된 경우)에서 Secureboot 및 Bitlocker를 비활성화해야 합니다.
- 재부팅 대상 기계
DTrace 사용
- 열기 상승된 명령 프롬프트.
- 다음 명령 중 하나를 실행합니다.
# 5초 동안 프로그램별 Syscall 요약: dtrace -Fn "tick-5sec { exit (0);} syscallentry{ @num[pid, execname] = count();} " # 3에 대한 타이머 설정/취소 프로그램 요약 초: dtrace -Fn "tick-3sec { exit (0);} syscall:: Nt*Timer*:entry { @[probefunc, execname, pid] = count();}" # 덤프 시스템 프로세스 커널 구조: (필요 기호 경로 설정되다) dtrace -n "BEGIN{print(*(struct nt`_EPROCESS *) nt`PsInitialSystemProcess);exit (0);}" # notepad.exe를 실행할 때 NTFS를 통한 경로 추적(KD a 필요
명령 dtrace -lvn 시스템 호출 syscall 공급자에서 사용할 수 있는 모든 프로브와 해당 매개변수를 나열합니다.
다음은 Windows에서 사용할 수 있는 일부 공급자와 해당 공급자가 계측하는 것입니다.
- 시스템 호출 – NTOS 시스템 호출
- fbt (함수 경계 추적) – 커널 함수 입력 및 반환
- PID – 사용자 모드 프로세스 추적. 커널 모드 FBT와 유사하지만 임의 함수 오프셋의 계측도 허용합니다.
-
에트 (Windows용 이벤트 추적) – ETW에 대해 프로브를 정의할 수 있습니다. 이 공급자는 DTrace에서 기존 운영 체제 계측을 활용하는 데 도움이 됩니다.
- 이것은 Windows가 이미 제공하는 모든 정보를 노출하고 얻을 수 있도록 DTrace에 추가한 것입니다. ETW.
Windows 시나리오에 적용 가능한 더 많은 샘플 스크립트는 여기에서 찾을 수 있습니다. 샘플 디렉토리.
원천: 마이크로소프트