【问题标题】:kvm vs. vmware for kernel debugging / USB driver developmentkvm vs. vmware 用于内核调试/USB驱动开发
【发布时间】:2009-06-21 09:14:35
【问题描述】:

我目前正在设置 vmware Server 2.0 以使用 gdb (see this setup guide) 进行内核调试,有人问我为什么不使用 kvm?

所以我问:内核调试/USB驱动开发的kvm vs. vmware

各有什么优缺点?

【问题讨论】:

    标签: linux-kernel vmware linux-device-driver kvm


    【解决方案1】:

    驱动程序开发?您是否正在为特定硬件开发驱动程序?如果是这样,那么您可能无法使用虚拟化,因为虚拟化实例无法访问新硬件。

    为此,您需要两台机器,一台在另一台上运行远程调试器。

    *编辑:* 显然您正在为 USB 设备开发驱动程序?这是一个特别是虚拟机实际上可以提供帮助的领域。如今,大多数虚拟机都能够将特定的 USB 设备委托给来宾操作系统。

    也就是说,与远程调试器选项相比,这种情况并没有真正提供任何好处,因为您仍然需要一种方法来检查正在运行或崩溃的操作系统的状态,而虚拟机在这方面提供的帮助很少。您也许可以重播崩溃前保存的状态。

    您也许可以使用 UML 获得一些牵引力,这将允许您像在常规用户进程上一样进行本地调试,这样麻烦会少一些。

    【讨论】:

    • 您认为使用 vm 为 USB 设备开发驱动程序会有问题?
    • 没有人提到 USB。除非所有设备都是 USB 的?
    • 难道我不能在 VMware 下使用 Kdump lse.sourceforge.net/kdump 吗?如果可以的话,我就不需要第二台机器了,我可以在海滩上的笔记本电脑上调试我的 USB 啤酒温度监视器 :-)
    【解决方案2】:

    我将添加另一个选项,而不是直接回答问题...根据所讨论的内核是否是 Linux 内核,以及您正在处理它的哪个部分,您可能会发现 UserModeLinux(包括在 2.6.x 源代码中,并作为 2.4 和 2.2 的补丁集提供)可能胜过这两个选项。

    由于它将内核作为宿主内核下的用户态进程运行,因此更容易附加常用的调试工具。我相信它在文件系统相关代码的更新/添加的早期阶段非常常用。如果您正在开发/调试直接与硬件交互的模块,那么它对您的使用可能会少得多。

    参考链接:home, other

    【讨论】:

    • 但是相比vmware,我为什么会选择这个呢?
    • “由于它作为宿主内核下的用户态进程运行内核,因此更容易将常用调试工具附加到”(可能包括通常无法连接到正在运行的内核的工具)
    【解决方案3】:

    我最近开始构建 GNU Mach/HURD,发现 QEmu/KVM 的组合工作得非常好.. 原因如下:

    1. QEmu 提供了相当干净的环境
    2. 网络有很多选择
    3. 我可以使用原始设备文件/环回轻松挂载文件系统

    底线是,对于内核工作,我只希望启动最少的功能并查看结果。 VMWare 更多的是用于可用的虚拟化而不是肮脏的。

    然而,没有可比性与在具有真实硬件的真实机器上引导。 VM 环境有时看起来像是一个安全毯……因为即使是我的烤面包机也知道 Realtek RTL8139C 是什么。

    【讨论】:

      【解决方案4】:

      如果它是一个“真正的硬件”设备,当然,vmware 不会模拟它,所以你将无法调试它下的驱动程序(任何其他虚拟化软件也不会,除非你扩展一个来这样做)。

      设备驱动程序调试可以在一定程度上使用具有普通内核的真实硬件机器进行 - 尽管显然有些事情你不能做 - 例如设置断点。

      仍然可以将调试器附加到内核并检查内容。此外,传统的 printf() 调试是完全可行的(printk,anyone),并且内核中的各种功能使调试更容易。可以使用各种调试选项构建内核,以尝试检测指针问题、内存泄漏等。

      默认情况下,当内核遇到 OOPS 或 BUG 情况时,它甚至会在日志中提供漂亮的堆栈跟踪(显然,如果系统挂起或崩溃,这不一定会写入任何地方)。当然,在中断中发生的指针超出范围的情况是灾难的根源,但您仍然可以在恐慌之前立即在屏幕上获得堆栈跟踪:)

      【讨论】:

      • 我原以为可以调试 USB 设备之类的东西,因为它们可以通过 vm 访问,并且我认为 USB 流量/数据只会传递到 vm 上的 USB 控制器.
      • 我怀疑你是对的 - 有一种“通过”USB 流量的方法可以让客户操作系统直接看到设备。我见过这个选项,但从未使用过。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2017-11-17
      • 1970-01-01
      相关资源
      最近更新 更多