如何在虚拟框GUI工具中启动调试模式



我一直在玩Xubuntu的VirtualBox实现。我正在学习使用 VBoxManage 和 Vagrant 配置包含内容的测试框。不幸的是,我的盒子工作非常不稳定。 我想在 VirtualBox 中启用调试模式,以更好地了解为什么盒子有时会冻结。

当前顶部菜单:VirtualBox VM/机器/视图/输入/设备/窗口/帮助。 我希望能够进入/调试/顶部菜单,并选择 VirtualBox 图形用户输入 (GUI) 工具中显示的统计信息/命令行/日志记录/显示日志,[选择虚拟机 -->设置 --> 用户界面。

据我了解,我正在寻找内置调试器。我已经找到了说明,但它们对我来说没有意义。

可以通过三种方式启用调试器:

直接使用 VirtualBox 启动 VM --startvm,并附加一个 --dbg、--debug 或 --debug-syn-line 参数。

设置VBOX_GUI_DBG_ENABLED或VBOX_GUI_DBG_AUTO_SHOW环境 变量为 true 之前启动 VirtualBox 进程。设置 这些变量(仅检查它们是否存在)即使有效 当第一个 VirtualBox 进程是虚拟机选择器窗口时。虚拟机 随后从选择器启动将具有调试器 启用。

在启动 VM。可以全局设置,也可以基于每个 VM 设置此设置。

我知道如何通过两种方式启动我的虚拟盒子。 1) 打开虚拟盒子 GUI,单击感兴趣的机器,然后启动它。 2)从包含我的自定义Vagrantfile的文件夹中启动该框,然后$ vagrant up

从 Virtualbox 上的上述链接中我不清楚如何设置 vagrant 或 VBoxManage 或 VirtualBox GUI 以启动启用了调试模式的盒子(或者更好的是,在构建自定义框时启用调试模式......我不敢相信有人建立了一个很好的 GUI,然后忽略了在工具中实现调试的机会。

注意:我正在为我的主机使用 MacOS;我运气很好,使用bstoots/xubuntu-16.04-desktop-amd64作为来宾虚拟机盒的基础。以前有人来过这里吗? 有关如何在启用调试的情况下启动盒子的提示和提示? 非常感谢。

所以我尝试了更多的事情(64 位 Win7 企业版上的虚拟盒子 5.2.20 r125813)。

方法 3''(每台机器 ExtraDataItem:不执行任何操作,甚至不向 VM 窗口添加"调试"菜单)

方法 3'(全局 ExtraDataItem):将"调试"菜单添加到 VM 窗口,但不会在 VM 启动时中断(VM 刚刚运行,您可以打开调试控制台并停止它,但当然我们深入启动过程,或者之后......但它可能很有用...将"调试"作为默认值没有坏处。

方法1:工作但不像描述的那样,即使在VBox自己的用户手册中也感到困惑,第261页描述了错误的选项。然而,第8章给出了一些想法,我们来看看: 您可以将环境变量添加到命令行:

C:Program FilesOracleVirtualBox>vboxmanage startvm "SomeVM" -E VBOX_GUI_DBG_AUTO_SHOW=true -E VBOX_GUI_DBG_ENABLED=true

将显示"调试"菜单,打开调试窗口并加载在重置向量处停止的虚拟机

VBOX_GUI_DBG_ENABLED=真 单独只会将"调试"添加到 VM 的窗口(VM 将运行)

VBOX_GUI_DBG_AUTO_SHOW=真 单独将加载VM停止但没有"调试"菜单,所以真的无事可做...(但是这可以与全局设置配对!

手册(和在线)中关于变量必须只定义的注释是不正确的,除非设置为"true",否则它们没有任何可识别的效果。

顺便说一句:ExtraDataItem 行是:

<ExtraDataItem name="GUI/Dbg/Enabled" value="true"/>

我决定设置它:这样所有 VM 都启用了"调试"菜单,但像往常一样启动,如果我想从头开始调试一个,那么我使用命令行 -E VBOX_GUI_DBG_AUTO_SHOW=真

https://reactos.org/wiki/VirtualBox#Built-in_VirtualBox_.28low-level.29_debugger 更好地解释了事情,但是仅适用于Windows(我认为7 ...有3种方法:

1 - 从命令行窗口启动 VBox,添加列出的选项(有关命令行运行方法,请参阅 VBox 用户手册)。优点是每台机器,缺点:命令行很长,最好从shell脚本发出(在Windogs的情况下:BAT或CMD)。

2 - 声明环境变量: 我在 Windows 7(64 位企业版)下尝试了一些,在这里我声明了用户环境变量 VBOX_GUI_DBG_ENABLED 和 VBOX_GUI_DBG_AUTO_SHOW(计算机/属性/高级系统设置/环境变量),并在启动 VM 时重新启动 Virtual Box GUI 后,它将进入调试控制台。我的 VM 是x86_64的,像许多其他内核调试器一样,这个调试器对于逐步执行 ROM BIOS(至少是初始部分)毫无用处。我懒得看我是否可以在 ROM BIOS 被 RAM 编辑(重新定位到 RAM)或在引导加载程序中设置断点(首先我必须找到这个虚拟机是否以及如何重新定位 BIOS,然后在哪里是闯入引导加载程序的最佳位置,这是自定义的);但是我过去用类似的调试器做过这样的事情(这似乎是从 oled Compusoft 的 CodeView x86 内核调试器中借用的东西......

3' - 修改 VBox 全局或每台计算机配置文件,我没有尝试过,但我跟踪了全局文件: %主磁盘%:\用户\%用户名%。VirtualBox\VirtualBox.xml 这很简单,我假设添加列出的项目应该有效(%homedisk%通常是C,用%username%代替登录名)。

3'' - 修改单个虚拟机的文件 (*.vbx)。它们 VM 位于 %homedisk%:\Users\%username%\VirtualBox VM 中 *.vbox文件是XML格式,查找添加数据的位置也很简单。这种方法的优点是每个虚拟机,缺点是有可能搞砸虚拟机(所以做备份)

我家里的iMac上有VirtualBox,但我还没有尝试过这个。我没有深入研究Mac上的VirtualBox文件结构,但如果它们与Windows不有些相似,我会感到惊讶。命令行应该非常相似(路径当然会不同,shell 脚本也会不同),一个可能的烦恼可能是您可能必须使用 sudo ......

无论主机如何,调试x86_64的初始启动顺序都不是一件容易的事,因为通常在开始时我们会时间旅行到 80 年代,并假装我们正在运行带有两个级联 PIC 的 386 和键盘控制器的扩展地址线控制器......很多乐趣!(或不...