自学内容网 自学内容网

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

2. 创建一个启动调试的脚本 `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!
```

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

4. 使用说明:

```markdown
# ReactOS 调试指南

## 准备工作

1. 安装必要软件:
   - VirtualBox
   - Windows SDK (包含 WinDbg)
   - Visual Studio 2019 (用于源码级调试)

2. 设置环境:
   ```batch
   call setup_vm.bat
   call setup_symbols.bat
   ```

3. 启动调试环境:
   ```batch
   call start_debug.bat
   ```

## 在 WinDbg 中设置

1. 设置符号路径:
   ```
   .sympath+ E:\Reactos_WinDriver\reactos-master\build\symbols
   .reload
   ```

2. 设置源码路径:
   ```
   .srcpath+ E:\Reactos_WinDriver\reactos-master
   ```

3. 常用调试命令:
   - `g` - 继续执行
   - `bp module!function` - 设置断点
   - `bl` - 列出所有断点
   - `k` - 显示调用栈
   - `!analyze -v` - 详细分析当前异常
   - `lm` - 列出加载的模块
   - `.reload` - 重新加载符号
   - `dt type` - 显示类型信息

## 调试驱动程序

1. 在 ReactOS 中加载驱动:
   ```
   load driver.sys
   ```

2. 在 WinDbg 中设置驱动断点:
   ```
   bp driver!DriverEntry
   g
   ```

3. 查看驱动状态:
   ```
   !drvobj driver
   ```
```

5. 创建一个完整的调试环境启动脚本 `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
```

6. 如果需要远程调试,创建一个远程调试配置脚本 `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

如果你需要特定的调试场景或遇到问题,请告诉我,我会提供更详细的指导。
 


原文地址:https://blog.csdn.net/zhangyihu321/article/details/143661260

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!