当前位置: 首页 > news >正文

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


 


http://www.mrgr.cn/news/70916.html

相关文章:

  • 05-接口文档、根据接口文档完善登录功能
  • 【JavaScript】
  • 刘知远LLM——大模型微调:prompt-learningdelta tuning
  • 《一本书讲透 Elasticsearch》京东评论采集+存储+可视化全 AI 实现
  • LeetCode Hot100 49.字母异位词分组
  • C++ 接口(抽象类)
  • 项目管理全流程平台(源码+文档+部署+讲解)
  • 慌慌张张匆匆忙忙,验证新人如何稳住
  • 光流法与直接法在SLAM中的应用
  • SQL Server Cross Apply 将某列分号的值转换多行
  • Linux文件以及文件夹操作命令 以及Linux文件夹含义最简单易懂的解释 Centos
  • Generator 函数的语法和用法
  • package.json中“type“: “module“是什么含义,es6和commonjs的区别以及require和import使用场景
  • ScheduledThreadPoolExecutor 定制化线程池任务调度底层原理
  • 一文了解什么是CNAPP
  • 京东关键词API接口获取
  • SpringBoot(十一)SpringBoot上传文件
  • 【Linux系统编程】第四十五弹---线程互斥:从问题到解决,深入探索互斥量的原理与实现
  • IOT物联网低代码可视化大屏解决方案汇总
  • runOnUiThread
  • .NET 公共语言运行时(Common Language Runtime,CLR)
  • MTSET可溶于DMSO、DMF、THF等有机溶剂,并在水中有轻微的溶解性,91774-25-3
  • python开发桌面应用(跨平台) 全流程
  • 数据库管理-第261期 什么是多模融合(20241112)
  • Linux也有百度云喔~
  • 【机器学习】数学知识:指数