※ 引述《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)