很抱歉这篇文章比较长。
我需要一些关于我的项目的意见。
我正在尝试制作一个应用程序,从位于VmWare虚拟机内部的客户Linux操作系统中收集内核调试信息,并有效地将它们发送到主机操作系统。
到目前为止,我已经找到了一个类似的项目,但是它是为Windows编写的[1]。该项目的作者编写了一个DLL,加载到内存中,并替换了KdSendPacket和KdReceivePacket函数的实现,使用VmWare GuestRpc[2]机制代替了缓慢的串行端口。然后通过命名管道将数据发送到主机上的调试应用程序(Kd或WinDbg)。
作者声称,通过避免串行端口传输,速度提高了高达45%。
我正在尝试实现类似的东西,但是针对Linux,并尝试使调试过程比使用串行端口更快。
我的具体问题是:
- 是否存在类似的应用程序?我没有找到任何相关信息。
- 如果将其功能与netconsole[3]等进行比较,这样的应用程序是否值得开发?
- 您会建议使用哪种拦截printk消息的方法?
- 在Linux上是否有KdSendPacket/KdReceivePacket的等效物?
[1]. http://virtualkd.sysprogs.org/dox/operation.html
[2]. http://articles.sysprogs.org/kdvmware/guestrpc.shtml
[3]. http://www.kernel.org/doc/Documentation/networking/netconsole.txt