调查拖放 (DnD) 问题
在各种主机和客户机操作系统组合之间处理拖放操作是一个复杂且时间敏感的问题。为了进一步诊断您的问题,我们需要您在进行一些调整后运行您的 VirtualBox 安装。这些调整会影响主机操作系统以及您希望用于此拖放操作的客户机。
要求
- 拖放支持仅适用于 VirtualBox 5.0 及更高版本。VirtualBox 的旧版本仅提供实验性支持,因此不受支持。
- 客户机需要安装 VirtualBox 增强功能 (Guest Additions) 才能执行与主机之间的拖放操作。如果没有增强功能,拖放将无法工作!
- 拖放功能在新创建的虚拟机上默认是禁用的。要启用拖放支持,请转到虚拟机的“设备”菜单,打开“拖放”,然后选择您要使用的相应模式。
注意:另请注意,目前拖放 (DnD) 支持仅适用于官方的“VirtualBox 管理器”前端。如果您使用其他前端(例如 VBoxHeadless 或 VBoxSDL),则本指南将不适用于您。
从主机收集信息
像往常一样,在诊断 VirtualBox 问题时,拥有相应的 VBox.log 文件会很有用。为了收集有关实际拖放操作的更详细信息,请执行以下操作:
- 关闭所有虚拟机实例和 VirtualBox 程序,包括 VBoxSVC。
- 从命令行运行 VirtualBox,并设置环境变量
VBOX_RELEASE_LOG=guest_dnd.e.l.l2.l3.f
set (有关更多背景信息,请参阅 日志记录功能 的描述)。在 Windows 上,您可以使用setx VBOX_RELEASE_LOG "guest_dnd.e.l.l2.l3.f" /M
在管理员命令提示符下将其设置为系统级(必需)。在像 Linux、Unix 或 OS X 这样的支持 POSIX 的系统上,您可以将以下内容添加到 /etc/profile 文件中:export VBOX_RELEASE_LOG=guest_dnd.e.l.l2.l3.f
- 重启主机。
- 启动 VirtualBox 管理器并启动您希望诊断拖放问题的虚拟机。
- 执行并重现出现问题的拖放操作(从主机到客户机或从客户机到主机)。
您重现拖放问题的虚拟机所生成的 VBox.log 文件现在应该包含更多以以下内容开头的日志语句:
DnD: <More logging comes here>
这就是从主机收集拖放调试信息所需的全部步骤。然而,有时错误并不发生在主机上,而是发生在正在运行的客户机本身。要诊断此类问题,请阅读下一节。
从客户机收集信息
在客户机上收集拖放调试信息与在主机上收集信息类似。为此,还需要在客户机上设置系统级环境变量(而不是在主机上!)。
Linux、BSD 或 Solaris 客户机
- 确保您至少安装了 VirtualBox 增强功能 5.0 或更高版本。
- 以 root 身份打开文件 /usr/bin/VBoxClient-all 并将以下行:
/usr/bin/VBoxClient --draganddrop
更改为:VBOX_RELEASE_LOG_DEST="file=/tmp/VBoxClient.log" VBOX_RELEASE_LOG_FLAGS="time tid thread" VBOX_RELEASE_LOG="all.e.l.l2.l3.f" /usr/bin/VBoxClient --draganddrop
- 保存文件 /usr/bin/VBoxClient-all
- 对文件 /etc/X11/Xsession.d/98vboxadd-xclient 进行与上述相同的编辑。
- 保存文件 /etc/X11/Xsession.d/98vboxadd-xclient
- 重启客户机。
- 执行并重现出现问题的拖放操作(从主机到客户机或从客户机到主机)。
客户机上因拖放问题而生成的日志文件 "/tmp/VBoxClient.log" 现在应该包含更多以以下内容开头的日志语句:
DnD: <More logging comes here>
Windows 客户机
- 确保您至少安装了 VirtualBox 增强功能 6.1 或更高版本。
- 如果客户机上尚不存在目录 "C:\Temp",请创建它。
- 打开任务管理器并确保 VBoxTray.exe 没有再运行(如果需要,请终止 VBoxTray.exe)。
- 打开命令行提示符并执行:
VBoxTray.exe -vvvv --logfile c:\temp\VBoxTray.log
- 执行并重现出现问题的拖放操作(从主机到客户机或从客户机到主机)。
客户机上因拖放问题而生成的日志文件 "C:\Temp\VBoxTray.log" 现在应该包含更多以以下内容开头的日志语句:
DnD: <More logging comes here>
常见问题 / 故障排除
问题 | 回答 |
---|---|
VBox.log 不包含详细的拖放输出。 | 确保 VBoxSVC (VBoxSVC[.exe]) 和虚拟机 (VirtualBoxVM[.exe]) 进程继承了所有 VBOX_RELEASE_LOG_XXX 环境变量。如果它们没有继承,请尝试重启主机。 |
VBoxTray.log 不包含详细的拖放输出。 | 确保 VBoxTray 是按照上述指定参数手动启动的,并且日志输出目录对于 VBoxTray 是可访问的。 |
命令 setx 在我的 Windows 客户机或主机上不起作用。我该怎么办? | 较旧的 Windows 操作系统(例如 Windows XP)不提供 setx 命令。您必须首先安装“Windows XP Support Tools”:下载 |
收集和提供日志文件
请收集主机和客户机(根据您运行的客户机类型,可以是 VBoxClient.log 或 VBoxTray.log)的 VBox.log 文件,将它们打包(ZIP、RAR)成一个存档文件,然后将其作为新错误报告的一部分提交到我们的 公共错误追踪器。
简而言之,提交以下日志:
- 主机:VBox.log
- Windows 客户机:C:\Temp\VBoxTray.log
- Linux/Unix 客户机:/tmp/VBoxClient.log
注意: 如果没有主机和客户机日志,我们将无法诊断您的问题,因此请务必始终附上它们。谢谢。