다음을 통해 공유


디버거 확장 명령 사용

디버거 확장 명령의 사용은 디버거 명령의 사용과 매우 유사합니다. 이 명령은 디버거 명령 창에 입력되어 이 창의 출력 또는 대상 애플리케이션 또는 대상 컴퓨터의 변경 사항을 생성합니다.

실제 디버거 확장 명령은 디버거에서 호출하는 DLL의 진입점입니다.

디버거 확장은 다음 구문에 의해 호출됩니다.

! [module.]extension [arguments]

모듈 이름은 .dll 파일 이름 확장명을 사용해서는 안 됩니다. 모듈에 전체 경로가 포함된 경우 기본 문자열 크기 제한은 255자입니다.

모듈이 아직 로드되지 않은 경우 LoadLibrary(모듈)에 대한 호출을 사용하여 디버거에 로드됩니다. 디버거가 확장 라이브러리를 로드한 후 GetProcAddress 함수를 호출하여 확장 모듈에서 확장 이름을 찾습니다. 확장 이름은 대/소문자를 구분하며 확장 모듈의 .def 파일에 표시되는 대로 정확하게 입력해야 합니다. 확장 주소가 있으면 확장이 호출됩니다.

검색 순서

모듈 이름을 지정하지 않으면 디버거는 로드된 확장 모듈에서 이 내보내기를 검색합니다.

기본 검색 순서는 다음과 같습니다.

  1. 모든 운영 체제와 Dbghelp.dll 및 winext\ext.dll 두 모드에서 작동하는 확장 모듈입니다.

  2. 모든 모드에서 작동하지만 운영 체제별 확장 모듈입니다. Windows XP 이상 버전의 Windows의 경우 winxp\exts.dll.

  3. 모든 운영 체제에서 작동하지만 모드별 확장 모듈입니다. 커널 모드의 경우 winext\kext.dll. 사용자 모드의 경우 winext\uext.dll.

  4. 운영 체제별 및 모드별 확장 모듈입니다. 다음 표에서는 이 모듈을 지정합니다.

사용자 모드 커널 모드
winxp \ ntsdexts.dll winxp \ kdexts.dll

확장 모듈이 언로드되면 검색 체인에서 제거됩니다. 확장 모듈이 로드되면 검색 순서의 시작 부분에 추가됩니다. .setdll(기본 확장 DLL 설정) 명령을 사용하여 모든 모듈을 검색 체인의 맨 위로 승격할 수 있습니다. 이 명령을 반복적으로 사용하면 검색 체인을 완전히 제어할 수 있습니다.

.chain(디버거 확장 목록) 명령을 사용하여 로드된 모든 확장 모듈의 목록을 현재 검색 순서로 표시합니다.

로드된 확장 모듈에 없는 확장 명령을 실행하려고 하면 내보내기 찾을 수 없음 오류 메시지가 표시됩니다.