代码之家  ›  专栏  ›  技术社区  ›  Zohar81

在网络上设置双机内核调试

  •  4
  • Zohar81  · 技术社区  · 6 年前

    我想选择调试安装在远程物理机器上的内核驱动程序的选项(因为我没有firewire电缆)。在阅读相关文档时,我没有看到远程物理调试介质的任何限制,因此我推断firewire电缆和无线网络ip都应该可以工作。

    我认为lldb远程连接使用 kdp-remote <machine-ip> 我会成功的,但我没有得到任何回应。

    然而,从远程VM,即使VM可以位于远程物理机器上,它也会成功。

    我的引导参数配置为 keepsyms=1 debug=0x144 -v

    1 回复  |  直到 6 年前
        1
  •  2
  •   pmdj    6 年前

    我们在评论(下面的第2项)中找到了问题所在,但为了子孙后代,下面列出了要检查xnu内核调试是否正常的事项:

    1. 目标计算机必须具有通过PCIe或Thunderbolt连接的物理以太网端口,或者必须使用直接firewire连接(可选通过Thunderbolt)。USB到以太网适配器在目标端无法工作。客户端机器不那么麻烦,你可以在那里使用wifi或USB以太网。
    2. 该协议使用UDP,而不是TCP。您是否在lldb机器上运行防火墙,该防火墙可能会阻止UDP数据包?(您可以尝试使用将udp数据包从目标发送到客户端。) nc (netcat)工具,而机器未崩溃。)
    3. 客户端计算机上的ARP条目是否正确? arp <target ip> 应生成目标接口的MAC地址。
    4. 崩溃的Mac不会响应ping,只会通过UDP响应KDP数据包。所以不回ping并不意味着什么。
    5. 据我所知,机器崩溃时不会请求新的DHCP租约,因此这不应该是问题所在,但您可以始终尝试设置静态IP地址以确保安全。
    6. 设置后是否重新启动 boot-args ?它们只在新靴子上生效。
    7. 如果SIP处于活动状态,则只能设置 nvram 从OS X/macOS 10.11以后的恢复环境中的变量。你可以跑步 nvram boot-args 验证设置是否卡滞。

    我个人的建议是,如果可能的话,使用FireWire进行内核调试,根据我的经验,它似乎是最快、最可靠的。