VMware Workstation Windows Kernel Debug Setting (direct, VirtualKD)
2026. 3. 16. 20:04

가상 COM 포트를 이용한 직접 연결

VMware Workstation에서는 가상 시리얼 포트(COM)를 named pipe에 연결해 WinDbg로 Windows 커널 디버깅을 수행할 수 있다.

1. com1 시리얼 포트 추가

 

2. Debug ON 설정

VM 에서 cmd창을 관리자 권한으로 열고 아래 명령어를 입력해준다.

`bcdedit /debug on`

`bcdedit /dbgsettings serial debugport:1 baudrate:115200`

debugport:1은 VMware에서 추가한 COM1을 의미한다.
baud rate는 일반적으로 115200을 사용한다. Microsoft 문서도 직렬 디버깅 시 이 구성을 안내한다.

3. Windbg 로 디버거 연결

호스트 PC에서 windbg를 관리자 권한으로 실행한 후 `kernel 연결 > COM > pipe > \\.\pipe\com1` 를 입력하고 창을 켜놓은 상태에서 VM을 재부팅해준다.

 

다했는데, 계속 windbg에서 waiting 상태로 나온다?

`bcdedit /set "{current}" testsigning on`

`bcdedit /set "{current}" nointegritychecks on`

`bcdedit /set "{current}" debug yes`

`bcdedit /set "{current}" debugtype serial`

`bcdedit /set "{current}" debugport 1`

`bcdedit /set "{current}" baudrate 115200`

`shutdown /r /t 0`

 

입력해주면된다.

 

VirtualKD(VKD)를 이용한 환경 설정 방법

직렬 COM 방식 대신 VirtualKD-Redux를 사용할 수도 있다.

1. VM Windows에 Debugging Setting

https://github.com/4d61726b/VirtualKD-Redux/releases/tag/2024.3

 

Release VirtualKD-Redux 2024.3 · 4d61726b/VirtualKD-Redux

This release adds ReactOS support to vminstall eliminating the need to manually copy kdcom.dll to system32.

github.com

VirtualKD-Redux-XXXX.X.zip 을 설치한 후 압축해제를 한다.

 

VirtualKD-Redux-2024.3\target64 경로에 존재하는 vminstall.exe 와 kdcom.dll를 복사하여 VM내부의 Windows에 붙여넣기해준다.

현재 환경이 64bit OS이기 때문에 target64/의 파일들을 사용해줬다.

호스트 PC에서 vmmon을 실행시켜준다. (32bit면 vmmon32.exe 실행. 64bit면 vmmon64.exe 실행)

 

VM내부에서 vminstall.exe를 실행시켜 설치해준다.

설치가 완료되면 자동으로 재부팅됩니다.

2. vmmon64.exe 실행

호스트PC에서 `VirtualKD-Redux-2024.3\vmmon64.exe` 를 실행시켜준다.

원하는 VM을 선택해주면 windbg가 실행된다.

windbg 화면에 Waiting to reconnect...가 나올텐데, 이때 VM을 재시작을 해준다.

 

3.  Boot Manager Setting (VM 재시작시 나오는 화면)

생성된 OS를 선택해주고 `F8`을 눌러 고급 부팅 옵션에 들어간다.

드라이버 서명 적용 사용 안 함을 선택해주면, 

 

~성공~

 

호스트 PC 에서 vminstall.exe를 구동한 경우

실수로 호스트 PC에 설치한 경우, 자동복구에 실패하여 계속해서 부팅이 안되는 문제가 발생할 수 있다.

0. 콘솔창 열기

문제 해결 > 고급 옵션 > 명령어 프롬프트

 

1. 부팅 공간 확인

diskpart

list volume

 

만약, C,D,Z ..등으로 레이블이 설정되어있지 않은 경우에는 `select volume 1` 으로 해당하는 볼륨 인덱스로 선택하고 `set label=Z` 와 같이 수행하여 레이블을 붙여준다.

 

2. kdcom.dll 설치 공간 찾기

`dir Z:\EFI\Microsoft\Boot\BCD\kd*`

를 입력했을때 kdcom.dll이 나오면 해당 경로를 기억해둔다.

dir Z:\ 이런식으로 입력했을때 해당 dir 내부의 list가 출력되기때문에 이를 참고하여 kdcom.dll을 찾을 수 있다.

 

3. kdcom_old.dll -> kdcom.dll

`move Z:\EFI\Microsoft\Boot\BCD\kdcom.dll Z:\EFI\Microsoft\Boot\BCD\kdcom_bck.dll`

`move Z:\EFI\Microsoft\Boot\BCD\kdcom_old.dll Z:\EFI\Microsoft\Boot\BCD\kdcom.dll`

혹시모를 문제를 예방하기위해 백업파일을 먼저 생성한 후, 기존의 backup 파일로 덮어준다.

 

4. integritychecks 설정

`bcdedit /store Z:\EFI\Microsoft\Boot\BCD /set {default} nointegritychecks No`

 

5. 재부팅 후 integritychecks 설정 초기화

재부팅하면 정상적으로 윈도우가 동작하는 것을 확인할 수 있다.

cmd를 관리자권한으로 열고 `bcdedit /set {default} nointegritychecks No` 를 수행하여 롤백시켜주자.

tistraw0454
tistraw0454
tistraw0454 님의 블로그 입니다.