通过网络设置双机内核调试

时间:2018-05-08 07:24:12

标签: macos debugging kernel kernel-extension xnu

我想检查调试安装在远程物理机上的内核驱动程序的选项(因为我没有火线电缆)。阅读相关文档,我还没有看到任何关于远程物理调试介质的限制,所以我推断出火线和IP无线网络都应该有效。

我认为使用kdp-remote <machine-ip>的lldb远程连接可以解决问题,但我没有得到任何回复。

但是,从远程VM,即使VM可以位于远程物理计算机上,它也会成功。

我的boot-args配置为keepsyms=1 debug=0x144 -v

1 个答案:

答案 0 :(得分:1)

我们在评论中找到了问题(下面的第2项),但是对于后人,这里有一个要检查xnu内核调试是否工作的事项列表:

  1. 目标计算机必须具有通过PCIe或Thunderbolt连接的物理以太网端口,或者必须使用直接火线连接(可选择通过Thunderbolt)。 USB到以太网适配器无法在目标端运行。客户端机器不那么繁琐,你可以在那里使用wifi或USB-ethernet。
  2. 协议使用UDP,而不是TCP。您是否在lldb计算机上运行了可能阻止UDP数据包的防火墙? (您可以尝试使用nc(netcat)工具将udp数据包从目标发送到客户端,同时机器不会崩溃。)
  3. 客户端计算机上的ARP条目是否正确? arp <target ip>应该产生目标接口的MAC地址。
  4. 崩溃的Mac不会响应ping,只会通过UDP响应KDP数据包。所以没有收回回来并不意味着什么。
  5. 据我所知,当机器崩溃时,机器不会请求新的DHCP租约,因此不应该出现问题,但您可以随时尝试设置静态IP地址可以肯定。
  6. 设置boot-args后重启了吗?它们只对新靴子起作用。
  7. 如果SIP处于活动状态,则只能从OS X / macOS 10.11开始从恢复环境设置nvram个变量。您可以运行nvram boot-args来验证设置是否卡住了。
  8. 我个人建议尽可能使用FireWire进行内核调试,这似乎是我体验中最快,最可靠的。