通过vmware虚拟机安装和调试编译好的 ReactOS

  1. 首先创建 VMware 虚拟机配置脚本 `setup_vmware.bat`:

```batch

@echo off

:: setup_vmware.bat

:: 设置路径

set "REACTOS_BUILD=E:\Reactos_WinDriver\reactos-master\build"

set "VM_PATH=E:\VMs\ReactOS_Debug"

set "VMWARE_PATH=C:\Program Files (x86)\VMware\VMware Workstation"

:: 创建虚拟机目录

if not exist "%VM_PATH%" mkdir "%VM_PATH%"

:: 创建 VMware 虚拟机配置文件

echo Creating VMware configuration file...

(

echo .encoding = "windows-1252"

echo config.version = "8"

echo virtualHW.version = "16"

echo memsize = "2048"

echo numvcpus = "2"

echo displayName = "ReactOS_Debug"

echo guestOS = "other"

echo serial0.present = "TRUE"

echo serial0.fileType = "pipe"

echo serial0.fileName = "\\.\pipe\ReactOS_Debug"

echo serial0.pipe.endPoint = "server"

echo serial0.tryNoRxLoss = "FALSE"

echo debugStub.listen.guest32 = "TRUE"

echo debugStub.hideBreakpoints = "TRUE"

echo isolation.tools.hgfs.disable = "TRUE"

echo isolation.tools.dnd.disable = "TRUE"

echo isolation.tools.copy.enable = "TRUE"

echo isolation.tools.paste.enable = "TRUE"

echo scsi0.present = "TRUE"

echo scsi0.virtualDev = "lsilogic"

echo scsi0:0.present = "TRUE"

echo scsi0:0.fileName = "ReactOS.vmdk"

echo scsi0:0.deviceType = "scsi-hardDisk"

echo ide1:0.present = "TRUE"

echo ide1:0.fileName = "auto detect"

echo ide1:0.deviceType = "cdrom-raw"

echo ethernet0.present = "TRUE"

echo ethernet0.connectionType = "nat"

echo ethernet0.virtualDev = "e1000"

echo ethernet0.wakeOnPcktRcv = "FALSE"

echo ethernet0.addressType = "generated"

echo sound.present = "TRUE"

echo sound.virtualDev = "hdaudio"

echo pciBridge0.present = "TRUE"

echo pciBridge4.present = "TRUE"

echo pciBridge4.virtualDev = "pcieRootPort"

echo pciBridge4.functions = "8"

echo pciBridge5.present = "TRUE"

echo pciBridge5.virtualDev = "pcieRootPort"

echo pciBridge5.functions = "8"

echo pciBridge6.present = "TRUE"

echo pciBridge6.virtualDev = "pcieRootPort"

echo pciBridge6.functions = "8"

echo pciBridge7.present = "TRUE"

echo pciBridge7.virtualDev = "pcieRootPort"

echo pciBridge7.functions = "8"

) > "%VM_PATH%\ReactOS_Debug.vmx"

:: 创建虚拟硬盘

"%VMWARE_PATH%\vmware-vdiskmanager.exe" -c -s 20GB -t 0 -a lsilogic "%VM_PATH%\ReactOS.vmdk"

echo VMware virtual machine setup completed!

```

  1. 创建启动调试脚本 `start_vmware_debug.bat`:

```batch

@echo off

:: start_vmware_debug.bat

:: 设置路径

set "REACTOS_BUILD=E:\Reactos_WinDriver\reactos-master\build"

set "VM_PATH=E:\VMs\ReactOS_Debug"

set "VMWARE_PATH=C:\Program Files (x86)\VMware\VMware Workstation"

:: 确保调试管道不存在

if exist \\.\pipe\ReactOS_Debug (

echo Cleaning up existing debug pipe...

timeout /t 2 /nobreak > nul

)

:: 启动虚拟机

start "ReactOS VM" "%VMWARE_PATH%\vmware.exe" -x "%VM_PATH%\ReactOS_Debug.vmx"

:: 等待虚拟机启动

timeout /t 5 /nobreak

:: 启动调试器

start "WinDbg" "C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\windbg.exe" -k com:pipe,port=\\.\pipe\ReactOS_Debug,resets=0,reconnect

echo Debug environment started!

```

  1. 创建 VMware 工具检查脚本 `check_vmware_tools.bat`:

```batch

@echo off

:: check_vmware_tools.bat

:: 检查 VMware 安装

if not exist "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" (

echo VMware Workstation not found!

echo Please install VMware Workstation first.

exit /b 1

)

:: 检查必要工具

where windbg >nul 2>&1

if %ERRORLEVEL% NEQ 0 (

echo WinDbg not found!

echo Please install Windows SDK or WDK.

exit /b 1

)

echo All required tools are available!

```

  1. 创建 VMware 专用的调试环境配置文件 `vmware_debug.conf`:

```ini

VMware Debug Configuration

Virtual Machine

Name=ReactOS_Debug

Memory=2048

Processors=2

HDD_Size=20GB

ISO_Path=E:\Reactos_WinDriver\reactos-master\build\bootcd.iso

Debug

Pipe_Name=\\.\pipe\ReactOS_Debug

Baud_Rate=115200

Debug_Port=COM1

Symbols

Path=E:\Reactos_WinDriver\reactos-master\build\symbols

Source_Path=E:\Reactos_WinDriver\reactos-master

```

  1. 创建完整的 VMware 调试环境启动脚本 `start_vmware_environment.bat`:

```batch

@echo off

:: start_vmware_environment.bat

setlocal enabledelayedexpansion

:: 检查环境

call check_vmware_tools.bat

if %ERRORLEVEL% NEQ 0 goto :error

:: 设置路径

set "REACTOS_BUILD=E:\Reactos_WinDriver\reactos-master\build"

set "VM_PATH=E:\VMs\ReactOS_Debug"

set "ISO_PATH=%REACTOS_BUILD%\bootcd.iso"

:: 检查 ISO 文件

if not exist "%ISO_PATH%" (

echo ReactOS ISO not found at: %ISO_PATH%

goto :error

)

:: 配置虚拟机

if not exist "%VM_PATH%\ReactOS_Debug.vmx" (

echo Setting up new VMware virtual machine...

call setup_vmware.bat

if %ERRORLEVEL% NEQ 0 goto :error

)

:: 更新 CD-ROM 配置

echo Updating CD-ROM configuration...

(

echo ide1:0.fileName = "%ISO_PATH%"

echo ide1:0.present = "TRUE"

echo ide1:0.deviceType = "cdrom-image"

) >> "%VM_PATH%\ReactOS_Debug.vmx"

:: 启动调试环境

call start_vmware_debug.bat

if %ERRORLEVEL% NEQ 0 goto :error

echo VMware debug environment started successfully!

goto :end

:error

echo Failed to start VMware debug environment!

exit /b 1

:end

endlocal

```

  1. 创建调试命令文件 `debug_commands.dbg`:

```

; debug_commands.dbg

; 加载符号

.sympath+ E:\Reactos_WinDriver\reactos-master\build\symbols

.reload

; 设置源码路径

.srcpath+ E:\Reactos_WinDriver\reactos-master

; 常用断点

bp ntoskrnl!KiSystemStartup "g"

bp ntoskrnl!IoInitSystem "g"

; 显示调试信息

!vm

!process 0 0

!drvobj

; 继续执行

g

```

使用说明:

  1. 准备工作:

```batch

:: 检查环境

call check_vmware_tools.bat

:: 设置虚拟机

call setup_vmware.bat

```

  1. 启动调试环境:

```batch

call start_vmware_environment.bat

```

  1. 在 WinDbg 中:

```

; 加载调试命令

$$>a< debug_commands.dbg

```

  1. 调试提示:
  • 使用 `Ctrl+Break` 中断执行

  • 使用 `g` 继续执行

  • 使用 `bp module!function` 设置断点

  • 使用 `bl` 查看所有断点

  • 使用 `k` 查看调用栈

  • 使用 `!analyze -v` 分析崩溃

  1. 驱动调试:

```

; 在 ReactOS 中

load driver.sys

; 在 WinDbg 中

bp driver!DriverEntry

g

```

相关推荐
Escalating_xu40 分钟前
C++可变参数模板与引用折叠精讲
开发语言·c++
云泽8081 小时前
Visual Studio 2026 新手保姆级教程:环境搭建、界面优化与编译器配置详解
开发语言·c++·c·开发工具·visual studio
fqbqrr2 小时前
2607d,C++细节比不上d
c++·d
^yi2 小时前
【C++】继承的那些事儿~
c++·继承·菱形继承·隐藏·final·继承原理·多继承的指针偏移
ShineWinsu3 小时前
对于Linux:模版方法类的解析以及socket、TcpSocket的封装
linux·c++·面试·socket·模板方法模式·封装·tcpsocket
hold?fish:palm4 小时前
9 找到字符串中所有字母异位词
c++·算法·leetcode
啦啦啦啦啦zzzz6 小时前
算法:回溯算法
c++·算法·leetcode
Lzg_na6 小时前
订阅发布模块事例
c++
攻城狮Soar6 小时前
C++子类访问父类成员
c++·算法
郝学胜-神的一滴6 小时前
[简化版 GAMES 104] 现代游戏引擎 02:拆解现代游戏引擎5+1层级架构,吃透引擎底层核心逻辑
c++·unity·架构·游戏引擎·图形渲染·unreal engine·系统设计