我一直在玩Xubuntu的VirtualBox实现。我正在使用VBoxManage和Vagrant学习包含内容的配置测试盒。不幸的是我的盒子工作非常不稳定。我想在VirtualBox中启用调试模式,以便更好地理解为什么盒子有时会冻结。
当前顶级菜单:VirtualBox VM / Machine / View / Input / Devices / Window / Help。我希望能够通过VirtualBox图形用户输入(GUI)工具中显示的统计/命令行/日志/显示日志选择进入/ Debug / top菜单,[选择虚拟机 - >设置 - >用户界面。]
据我了解,我正在寻找the Built In Debugger。我已经找到了指示,但它们对我没有意义。
可以通过三种方式启用调试器:
使用VirtualBox --startvm直接启动VM,另外还有 --dbg, - debug或--debug-command-line参数。
设置VBOX_GUI_DBG_ENABLED或VBOX_GUI_DBG_AUTO_SHOW环境 在启动VirtualBox进程之前将变量设置为true。设置 这些变量(仅检查它们的存在)甚至是有效的 当第一个VirtualBox进程是VM选择器窗口时。虚拟机 随后从选择器启动将具有调试器 启用。
在启动之前将GUI / Dbg / Enabled额外数据项设置为true VM。这可以全局设置,也可以基于每个VM设置。
我知道如何以两种方式启动我的虚拟盒子。 1)打开Virtual Box GUI,单击感兴趣的机器,然后启动它。 2)从包含我的自定义Vagrantfile的文件夹中启动该框,然后$ vagrant up
。
我不清楚Virtualbox上面的链接,如何设置vagrant或VBoxManage或VirtualBox GUI来启动启用调试模式的框(或者更好的是,在构建自定义框时启用调试模式... )。我不相信有人建立了一个漂亮的GUI,然后省略了将Debug实现到工具中的机会。
注意:我使用MacOS作为主机;我使用bstoots/xubuntu-16.04-desktop-amd64
作为访客虚拟机盒的基础,运气最好。以前有人来过这里吗?有关如何启用启用调试的框的提示和提示?非常感谢。
答案 0 :(得分:1)
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)之后或在引导加载程序中设置断点(首先我必须确定此VM是否以及如何重定位BIOS,然后哪里是进入引导加载程序的最佳位置,这是自定义的);但是我过去使用类似的调试器来做类似的事情(这似乎是从oled Compusoft的CodeView x86内核调试器中借来的。。。)
3'-修改VBox全局或每台计算机的配置文件,我没有尝试过,但是我跟踪了全局文件: %homedisk%:\ Users \%username%.VirtualBox \ VirtualBox.xml 这非常简单,我假设添加列出的项目shoudl work(%homedisk%通常为C,用%username%代替登录名)。
3''-修改单个VM的文件(* .vbx)。它们的VM位于%homedisk%:\ Users \%username%\ VirtualBox VM中 * .vbox文件是XML格式,查找添加数据的位置也很简单。这种方法具有perVM的优势,有可能将VM搞砸(因此要进行备份)
我在家用iMac上安装了VirtualBox,但尚未尝试过。我没有深入研究Mac文件结构上的VirtualBox,但是如果它们与Windows不相似,我会感到惊讶。命令行应该非常相似(路径当然会有所不同,而shell脚本也会有所不同),一种可能的烦恼可能是您可能必须使用sudo ...
不管使用哪种主机,调试x86_64的初始启动顺序都不是一件容易的事,因为通常在开始时我们花时间旅行到80年代,并假装我们正在运行386,它带有两个级联的PIC和一个扩展的地址线控制器,通过键盘控制器... 超有趣! (或者不是)
答案 1 :(得分:1)
所以我尝试了更多的事情(64位Win7 Enterprise上的Virtual Box 5.2.20 r125813)。
方法3''(每台计算机的ExtraDataItem:不会执行任何操作,甚至不会在VM窗口中添加``调试''菜单)
方法3'(全局ExtraDataItem):在虚拟机窗口中添加了“调试”菜单,但在虚拟机启动时不会中断(虚拟机正在运行,您可以打开调试控制台并停止它,但是当然我们很深进入启动过程,或之后...)。但这可能很有用……将“ Debug”作为默认值不会有任何危害。
方法1:工作原理与描述不符,即使在VBox自己的用户手册中也感到困惑,第261页描述了错误WRONG选项。但是,第8章给出了一些想法,我们开始: 您可以将环境变量添加到命令行:
C:\Program Files\Oracle\VirtualBox>vboxmanage startvm "SomeVM" -E VBOX_GUI_DBG_AUTO_SHOW=true -E VBOX_GUI_DBG_ENABLED=true
将显示“调试”菜单,打开调试窗口并加载在复位矢量处暂停的虚拟机
VBOX_GUI_DBG_ENABLED = true 仅将“调试”添加到虚拟机的窗口中(虚拟机将运行)
VBOX_GUI_DBG_AUTO_SHOW = true 仅此一项将暂停VM,但不会加载“ Debug”菜单,因此实际上无事可做...(但是可以将其与全局设置配对!)
手册(在线)中仅定义变量的说明不是正确的,除非设置为“ true”,否则它们不会产生任何明显的作用。
顺便说一句:ExtraDataItem行是:
<ExtraDataItem name="GUI/Dbg/Enabled" value="true"/>
我决定进行设置:这样,所有VM都启用了“调试”菜单,但照常启动,如果我想从头开始调试一个,则可以使用命令行 -E VBOX_GUI_DBG_AUTO_SHOW = true