디버거 태그 언어 사용

디버거 명령은 일반 텍스트 또는 DML(디버거 태그 언어)을 사용하는 향상된 형식으로 출력을 제공할 수 있습니다. DML로 향상된 출력에는 관련 명령을 실행하기 위해 클릭할 수 있는 링크가 포함되어 있습니다.

DML은 Windows 10 이상에서 사용할 수 있습니다.

DML 지원 명령

다음 명령은 DML 출력을 생성할 수 있습니다.

lmD 명령은 DML 출력을 제공할 수 있는 명령의 예입니다. lmD 명령은 로드된 모듈 목록을 표시합니다. 다음 이미지와 같이 각 모듈 이름은 모듈에 대한 자세한 정보를 얻기 위해 클릭할 수 있는 링크입니다.

디버거의 lmD 명령 출력 스크린샷

다음 이미지는 usbuhci 링크를 클릭한 결과를 보여줍니다. 출력에는 usbuhci 모듈의 추가 세부 정보를 탐색할 수 있는 추가 링크가 포함되어 있습니다.

디버거의 usbuhci 모듈 세부 정보 스크린샷

DML 켜기 및 끄기

.prefer_dml 명령은 DML을 켜거나 끕니다. DML이 켜져 있으면(.prefer_dml 1) DML 출력을 생성할 수 있는 명령은 기본적으로 DML 출력을 생성합니다.

콘솔 개선 사항

이제 모든 Windows 디버거에는 DML 구문 분석을 지원하는 명령 출력 영역이 있습니다. windbg에서 명령 창은 모든 DML 동작을 지원하며 색, 글꼴 스타일 및 링크를 표시합니다. 콘솔 디버거, ntsd, cdb 및 kd는 DML의 색 특성만 지원하며, 색 모드가 활성화된 실제 콘솔에서 실행되는 경우에만 지원됩니다. 리디렉션된 I/O, ntsd –d 또는 remote.exe 세션이 있는 디버거는 색을 표시하지 않습니다.

콘솔 디버거 색 모드

이제 콘솔 디버거, ntsd, cdb 및 kd에서 실제 콘솔에서 실행할 때 색이 지정된 출력을 표시할 수 있습니다. 이는 기본값이 아니며 tools.ini 통해 색 모드를 명시적으로 사용하도록 설정해야 합니다. tools.ini 새 col_mode <true|false> 토큰은 색 모드 설정을 제어합니다. tools.ini 파일 작업에 대한 자세한 내용은 구성 tools.ini

색 모드를 사용하도록 설정하면 디버거가 색이 지정된 출력을 생성할 수 있습니다. 기본적으로 대부분의 색은 설정되지 않고 대신 현재 콘솔 색으로 기본 설정됩니다.

Windbg 명령 브라우저 창

Windows 10 이상에서 명령 브라우저 창은 DML을 구문 분석하고 표시합니다. 링크, exec> 및 모양 수정과 같은 <모든 태그가 완전히 지원<됩니다.>

WinDbg의 메뉴를 사용하여 명령 브라우저 세션을 시작하려면 보기, 명령 브라우저를 선택합니다. 명령 창의 .browse <명령은> 새 명령 브라우저 창을 열고 지정된 명령을 실행합니다. 자세한 내용은 WinDbg(클래식)에서 명령 브라우저 창 사용을 참조하세요. Ctrl+N을 사용하여 새 명령 브라우저 창을 열 수도 있습니다.

명령 브라우저 창은 드롭다운 기록 및 이전/다음 단추가 있는 웹 브라우저의 동작을 의도적으로 모방합니다. 기록 드롭다운은 마지막 20개 명령만 표시하지만 전체 기록은 유지되므로 명령으로 돌아가서 드롭다운을 통해 이전 기록을 표시할 수 있습니다.

원하는 만큼 명령 창을 한 번에 열 수 있습니다. 명령 창은 작업 영역에서 유지되지만 현재 명령만 저장합니다. 기록이 유지되지 않습니다.

WinDbg 보기 메뉴에는 사용자가 .dml_start 같은 새 브라우저 창에서 시작할 기본 명령을 설정할 수 있는 브라우저 시작 명령 설정 옵션이 있습니다. 이 명령은 작업 영역에 저장됩니다.

최근 명령 하위 창은 보기 메뉴에서 관심 있는 명령을 저장할 수 있습니다. 최근 명령을 선택하면 지정된 명령을 사용하여 새 브라우저가 열립니다. 브라우저 창의 상황에 맞는 메뉴에는 창의 현재 명령을 최근 명령 목록에 추가하는 메뉴 항목이 있습니다. 최근 명령 목록은 작업 영역에 유지됩니다.

명령 브라우저 창은 명령을 동기적으로 실행하므로 명령이 완료될 때까지 출력이 표시되지 않습니다. 장기 실행 명령은 완료될 때까지 아무 것도 표시하지 않습니다.

링크에는 웹 브라우저의 오른쪽 클릭 상황에 맞는 메뉴와 유사한 오른쪽 클릭 상황에 맞는 메뉴가 있습니다. 새 브라우저 창에서 링크를 열 수 있습니다. 링크의 명령을 사용할 클립보드에 복사할 수 있습니다.

제목 표시줄의 오른쪽 위 모서리 근처에 있는 아이콘을 클릭하여 명령 브라우저 창을 자동 새로 고침 또는 수동 새로 고침으로 설정합니다. 브라우저 자동 새로 고침은 디버거 상태 변경 시 해당 명령을 자동으로 다시 실행합니다. 이렇게 하면 출력이 라이브로 유지되지만 모든 변경 내용에 대해 명령을 실행하는 비용이 듭니다. 자동 새로 고침은 기본적으로 켜집니다. 브라우저를 라이브로 사용할 필요가 없는 경우 창의 상황에 맞는 메뉴를 사용하여 자동 새로 고침을 사용하지 않도록 설정할 수 있습니다.

명령은 사용자 인터페이스가 아닌 엔진에서 실행되기 때문에 .cls(화면 지우기)와 같은 사용자 인터페이스 관련 명령은 명령 브라우저 창에서 사용할 때 에서 구문 오류를 반환합니다. 또한 사용자 인터페이스가 원격 클라이언트인 경우 명령은 클라이언트가 아닌 서버에서 실행되고 명령 출력은 서버 상태를 표시합니다.

명령 브라우저 창은 디버거 명령을 실행할 수 있으며 DML을 생성하는 명령일 필요는 없습니다. 브라우저 창을 사용하여 사용할 임의의 명령 집합을 활성화할 수 있습니다.

DML 사용자 지정

DML은 명령 출력에 포함될 수 있는 작은 태그 집합을 정의합니다. 한 가지 예는 링크> 태그입니다<. .dml_start.browse 명령을 사용하여 링크> 태그(및 기타 DML 태그)를 실험<할 수 있습니다. .browse .dml_start파일 경로 명령은 DML 파일에 저장된 명령을 실행합니다. 출력은 일반 명령 창 대신 명령 브라우저 창 에 표시됩니다.

파일 c:\DmlExperiment.txt 다음 줄이 포함되어 있다고 가정합니다.

My DML Experiment
<link cmd="lmD musb*">List modules that begin with usb.</link>

다음 명령은 명령 브라우저 창에 텍스트와 링크를 표시합니다.

.browse .dml_start c:\Dml_Experiment.txt

명령 브라우저 창의 DML 파일 출력 스크린샷

usb로 시작하는 모듈 나열 링크를 클릭하면 다음 이미지와 유사한 출력이 표시됩니다.

DML 파일 출력에서 링크를 클릭한 후의 모듈 목록 스크린샷

DML 사용자 지정 및 DML 태그의 전체 목록에 대한 자세한 내용은 DML을 사용하여 디버거 출력 사용자 지정을 참조하세요.