较为简单的Linux内核调试方法
时间:2009-04-30 来源:done100
最近在网上看到一篇《一种方便的Linux内核调试方法:VirtualBox + KGDB》,觉得很有道理,如果采用类似的方法的话,就可以在HostOS上直接调试Target虚拟机,而不需要再重新克隆一个Develop机(由于自己一直未能将VirtualBox中虚拟机中的串口和HostOS的串口对接,因此采取的都是命名管道到串口的通信方式)。
这里主要用到了socat工具。
在VirtualBox中将TargetOS的串口启用并连接到HostOS中的/tmp/vbox管道,参考《VirtualBox下Ubuntu8.10的KGDB内核调试》,只不过这里TargetOS需要创建管道,然后启动TargetOS,选择带有KGDB的内核,启动后为停在等待gdb调试器的地方,这时在HostOS中执行socat tcp4-listen:8888 /tmp/vbox,将命名管道重定向到本地端口的8888,然后还是在HostOS中重新打开一个终端,转到内核源码目录下:
cd /usr/src/linux-source-2.6.27
然后启动gdb
gdb ./vmlinux
...
...
(gdb)set remotebaud 115200
(gdb)target remote tcp:localhost:8888
(gdb)...
这里主要用到了socat工具。
在VirtualBox中将TargetOS的串口启用并连接到HostOS中的/tmp/vbox管道,参考《VirtualBox下Ubuntu8.10的KGDB内核调试》,只不过这里TargetOS需要创建管道,然后启动TargetOS,选择带有KGDB的内核,启动后为停在等待gdb调试器的地方,这时在HostOS中执行socat tcp4-listen:8888 /tmp/vbox,将命名管道重定向到本地端口的8888,然后还是在HostOS中重新打开一个终端,转到内核源码目录下:
cd /usr/src/linux-source-2.6.27
然后启动gdb
gdb ./vmlinux
...
...
(gdb)set remotebaud 115200
(gdb)target remote tcp:localhost:8888
(gdb)...
相关阅读 更多 +