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

  1. 首先创建一个虚拟机配置脚本 `setup_vm.bat`:

```batch

@echo off

:: setup_vm.bat

:: 设置路径

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

set "VM_PATH=E:\VMs\ReactOS_Debug"

set "VBOX_MANAGE=C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"

:: 创建虚拟机目录

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

:: 创建虚拟机

"%VBOX_MANAGE%" createvm --name "ReactOS_Debug" --ostype "Other" --register --basefolder "%VM_PATH%"

:: 配置虚拟机

"%VBOX_MANAGE%" modifyvm "ReactOS_Debug" ^

--memory 2048 ^

--vram 128 ^

--cpus 2 ^

--boot1 dvd ^

--boot2 disk ^

--boot3 none ^

--boot4 none ^

--acpi on ^

--ioapic on ^

--pae on ^

--rtcuseutc on ^

--debugger on

:: 创建虚拟硬盘

"%VBOX_MANAGE%" createhd --filename "%VM_PATH%\ReactOS.vdi" --size 20000

:: 添加 SATA 控制器

"%VBOX_MANAGE%" storagectl "ReactOS_Debug" --name "SATA" --add sata --controller IntelAhci

:: 挂载虚拟硬盘

"%VBOX_MANAGE%" storageattach "ReactOS_Debug" ^

--storagectl "SATA" ^

--port 0 ^

--device 0 ^

--type hdd ^

--medium "%VM_PATH%\ReactOS.vdi"

:: 添加 IDE 控制器

"%VBOX_MANAGE%" storagectl "ReactOS_Debug" --name "IDE" --add ide

:: 设置调试端口

"%VBOX_MANAGE%" modifyvm "ReactOS_Debug" --uart1 0x3F8 4 --uartmode1 server "\\.\pipe\ReactOS_Debug"

echo Virtual Machine setup completed!

```

  1. 创建一个启动调试的脚本 `start_debug.bat`:

```batch

@echo off

:: start_debug.bat

:: 设置路径

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

set "VBOX_MANAGE=C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"

:: 挂载 ReactOS ISO

"%VBOX_MANAGE%" storageattach "ReactOS_Debug" ^

--storagectl "IDE" ^

--port 0 ^

--device 0 ^

--type dvddrive ^

--medium "%REACTOS_BUILD%\bootcd.iso"

:: 启动虚拟机

start "ReactOS VM" "%VBOX_MANAGE%" startvm "ReactOS_Debug"

:: 启动调试器

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. 创建一个符号文件配置脚本 `setup_symbols.bat`:

```batch

@echo off

:: setup_symbols.bat

:: 设置路径

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

set "SYMBOL_PATH=%REACTOS_BUILD%\msvc_pdb"

:: 创建符号目录

if not exist "%SYMBOL_PATH%" mkdir "%SYMBOL_PATH%"

:: 复制符号文件

xcopy /y /s "%REACTOS_BUILD%\*.pdb" "%SYMBOL_PATH%"

:: 创建符号路径配置文件

echo .sympath+ %SYMBOL_PATH% > "%SYMBOL_PATH%\symbols.txt"

echo Symbol files setup completed!

```

  1. 使用说明:

```markdown

ReactOS 调试指南

准备工作

  1. 安装必要软件:
  • VirtualBox

  • Windows SDK (包含 WinDbg)

  • Visual Studio 2019 (用于源码级调试)

  1. 设置环境:

```batch

call setup_vm.bat

call setup_symbols.bat

```

  1. 启动调试环境:

```batch

call start_debug.bat

```

在 WinDbg 中设置

  1. 设置符号路径:

```

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

.reload

```

  1. 设置源码路径:

```

.srcpath+ E:\Reactos_WinDriver\reactos-master

```

  1. 常用调试命令:
  • `g` - 继续执行

  • `bp module!function` - 设置断点

  • `bl` - 列出所有断点

  • `k` - 显示调用栈

  • `!analyze -v` - 详细分析当前异常

  • `lm` - 列出加载的模块

  • `.reload` - 重新加载符号

  • `dt type` - 显示类型信息

调试驱动程序

  1. 在 ReactOS 中加载驱动:

```

load driver.sys

```

  1. 在 WinDbg 中设置驱动断点:

```

bp driver!DriverEntry

g

```

  1. 查看驱动状态:

```

!drvobj driver

```

```

  1. 创建一个完整的调试环境启动脚本 `debug_environment.bat`:

```batch

@echo off

:: debug_environment.bat

setlocal enabledelayedexpansion

:: 检查必要工具

where vboxmanage >nul 2>&1

if %ERRORLEVEL% NEQ 0 (

echo VirtualBox not found!

goto :error

)

where windbg >nul 2>&1

if %ERRORLEVEL% NEQ 0 (

echo WinDbg not found!

goto :error

)

:: 设置环境

call setup_vm.bat

if %ERRORLEVEL% NEQ 0 goto :error

call setup_symbols.bat

if %ERRORLEVEL% NEQ 0 goto :error

:: 启动调试环境

call start_debug.bat

if %ERRORLEVEL% NEQ 0 goto :error

echo Debug environment started successfully!

goto :end

:error

echo Failed to start debug environment!

exit /b 1

:end

endlocal

```

  1. 如果需要远程调试,创建一个远程调试配置脚本 `setup_remote_debug.bat`:

```batch

@echo off

:: setup_remote_debug.bat

:: 设置远程调试

"%VBOX_MANAGE%" modifyvm "ReactOS_Debug" ^

--uart1 0x3F8 4 ^

--uartmode1 tcpserver 23946

:: 创建远程连接配置

echo Creating remote connection configuration...

(

echo Connection

echo Port=23946

echo Host=localhost

) > "%VM_PATH%\remote_debug.ini"

echo Remote debugging setup completed!

```

使用这些脚本,你可以:

  1. 设置调试环境:`debug_environment.bat`

  2. 启动调试会话:`start_debug.bat`

  3. 在 WinDbg 中加载符号和源码

  4. 开始调试 ReactOS

相关推荐
caimouse4 天前
ReactOS 窗口系统分析(22):鼠标 — mouse.c
c语言·开发语言·reactos
caimouse4 天前
ReactOS 窗口系统分析(14):计时器/属性/加速键/热键 — timer.c + prop.c + accelerator.c + hotkey.c
c语言·开发语言·reactos
caimouse5 天前
ReactOS 窗口系统分析(24):输入法 — ime.c
c语言·reactos
caimouse5 天前
ReactOS 窗口系统分析(13):滚动条 — scrollbar.c + scrollex.c
c语言·开发语言·reactos
caimouse10 天前
ReactOS 图形系统分析(36):位块传输 — bitblt.c
c语言·reactos
caimouse11 天前
ReactOS 图形系统分析(37):路径子系统 — path.c
c语言·reactos
caimouse11 天前
ReactOS 图形系统分析(41):画刷子系统 — brush.cpp
c++·reactos
caimouse11 天前
ReactOS 图形系统分析(31):内核 GDI — ntgdi
性能优化·reactos
caimouse11 天前
ReactOS 图形系统分析(33):字体子系统 — font.c
c语言·开发语言·reactos
caimouse11 天前
ReactOS 图形系统分析(42):形状填充 — fillshap.c
c语言·reactos