我認爲標題說明了一切! :)在調試會話中切換遠程KGDB和本地DDB
我想知道在調試遠程內核時是否確實有辦法在gdb和ddb之間切換。
我已經在gdb(或更確切地說是kgdb)提示符下。從這裏如何切換到調試機器上的本地ddb?
我的內核配置文件中已經包含options BREAK_TO_DEBUGGER
和我都GDB和DDB配置又名: options GDB options DDB
由於每developer's handbook,「每次輸入gdb時,該模式將遠程GDB與本地DDB之間進行切換。爲了立即強制下一個陷阱,只需鍵入s(step)。你的託管GDB現在可以控制目標內核:「
所以,我確實在gdb提示符下鍵入'gdb' :D)和預期的一樣,這是一個無法識別的命令。顯然,這個命令應該在ddb提示符下輸入。但我的問題是,我怎麼從一臺正在運行的機器中下載ddb,串行端口(儘管是虛擬的)遠程連接到另一臺機器的KGDB上?當遠程GDB正在監聽並使用sysctl debug.kdb.enter=1
強制一次恐慌時,它確實會進入遠程KGDB。但是,當它不在監聽時,系統會凍結。
我想要的是在本地機器上輸入ddb。使用它進行一些調試;放到遠程KGDB中,用KGDB做最好的事情,等我完成後再切換回本地DDB。
有沒有辦法做到這一點?如果是,請讓我知道
'的sysctl debug.kdb.available'給出'DDB gdb' '的sysctl debug.kdb.current'給出'gdb' 我試圖CTRL-C在DDB提示(GDB時是活躍的),以將控制權返還給GDB,但無濟於事。 如果我玩弄'debug.kdb.current',我可以達到我的目標嗎? – HighOnMeat
不確定。應該有1個後端及時。從DDB到GDB的轉換是「gdb」命令,轉換回是終止gdb。 –
我用'sysctl debug.kdb.current = ddb'將當前後端更改爲ddb。然後我引發了恐慌,我在ddb提示符下。在這裏鍵入'gdb'將機器連接到客戶端機器上的gdb後端。 但是,退出gdb會讓我回到調試機器上的shell提示符,而不是ddb。這是應該如何? – HighOnMeat