天天看點

如何調試系統啟動過程中systemd的代碼

之前寫過很多kernel的gdb debug, 其實使用者态也是可以調試的, 隻是在共享庫的動态位址上不是很好處理, 最近同僚有調試系統啟動過程中systemd的需求, 簡單研究了一下

其實qemu kvm打斷點并不差別kernel還是使用者态, 都是rip的值等于某個位址或者遇到斷點指令了, 是以開機的時候把斷點打到systemd的main上就可以了

但是其實另外一個問題是, 使用者态的位址是很多程序共享的, 這時候有可能會另一個程序也跑到了這個位址, 是以斷點就需要條件斷點, 用程序的pid是一個好方法,

下面是簡單得步驟

第一步, 開機暫停

第二步, 連接配接qemu, 打斷點到systemd的main

隻要打斷點的時候加入pid的條件限制, 就可以打到任意的程序了

繼續閱讀