通过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

相关推荐
zhyjhacker4 天前
ReactOS 4.2 OBJECT_TYPE_INITIALIZERj结构体的实现
c++·windows·reactos
zhyjhacker22 天前
3.1.1ReactOS系统中搜索给定长度的空间地址区间函数的实现
linux·c++·嵌入式硬件·reactos
zhyjhacker25 天前
memset()函数的实现
c++·windows·内核·reactos
zhyjhacker25 天前
3.1.1 ReactOS系统中二叉树创建一个MEMORY_AREA节点
java·前端·c++·windows·算法·内核·reactos
zhyjhacker25 天前
2.6.ReactOS系统中从内核中发起系统调用
c++·windows·算法·内核·reactos
zhyjhacker1 个月前
2.4.ReactOS系统提升IRQL级别KfRaiseIrql 函数
c++·windows·reactos
zhyjhacker1 个月前
1.3.ReactOS系统 PAGED_CODE 宏函数的实现
c++·windows·reactos
zhyjhacker1 个月前
2.1.ReactOS系统NtReadFile函数的实现。
c++·windows·reactos·ntreadfile
zhyjhacker1 个月前
2.4.ReactOS系统运行级别IRQL的切换
linux·前端·c++·reactos·readfile