作者zwai (科科)
看板LinuxDev
标题Re: [问题] kernel debug
时间Thu Oct 13 21:48:27 2011
※ 引述《yshihyu (yshihyu)》之铭言:
: 请问一下
: 1.kgdb/ gdb 是怎样差异?
一个是 kernel 内的,一个是 user program 用的。
但是 kgdb 这个名字会误导人,期时要搭配 gdb 才能使用。
应该说开启 kgdb 後,kernel 可以在 runtime 的时候给远端的 gdb 控制。
: 2.是linux kernel 在编译程式menuconfig 要设定支援 kgdb 才可以用gdb去对kernel debug吗?
: 还有编译kernel gcc 要 加-g 参数是嘛?
要用 menuconfig 去开。
: 3.因为一般程式用gdb可以针对程式码的哪个函数或是档案的行数去debug
: 那用gdb去debug一个kernel要如何去debug可能出错的地方? 这是我疑惑的地方
: 下面是把编译的image 用载入到gdb是嘛?
: gdb -q vmlinux
gdb 要搭配 kgdb 才能使用,你要 debug 的地方是 host,
你需要另外一台电脑当 client 端。一般来说可用 LAN 或
rs232 的方式连进去。无法直接对 vmlinux 使用,因为
它只是个 binary file,不是 process。
: 4.为什麽网路上有人是结合qemu 虚拟机+ kgdb 去debug kernel 有什麽用处?
因为方便阿~ 用 virtual machine 就不需要两台电脑这麽麻烦,
单纯多了。实际上 kgdb 可能需要修改 uart driver 才能使用。(arm kernel)
: 5.qemu + kgdb 算是他们说的远端debug? 用在嵌入式上吗?
不算,qemu 是 virtual machine。另外真实的 ARM SoC 开发板是很难模拟的。
另外 qemu 可模拟 x86 和 arm,我想不只是嵌入式。
---
最後,其实 printk 会比较好用,当你用了 kgdb,可能就无法重现
之前的问题了。
: 谢谢
: 谢谢
--
ψ(′~‵)╯ 我什麽都没说,我只是蹲在旁边画圈圈
○
--
※ 发信站 :批踢踢实业坊(ptt.cc)
◆ From: 220.132.13.236
※ 编辑: zwai 来自: 220.132.13.236 (10/13 21:54)