Macで動くVMWare Fusionを使ってLinux Kernelの実行を覗く方法
Macで動くVMWare Fusion2を使ってLinux Kernel2.6の動きを追う方法のメモ.*1
まずvmxファイルに
debugStub.listen.guest32 = "TRUE"
の1行を書き加えます.
VMWare Fusionを起動します.このとき上のvmxファイルと同じディレクトリの中に.logで終わるファイルがあるので,その中に書いてあるlistening portを探します.
ソースファイルとの対応付けをするためにvmlinuxとカーネルのソースコードをもってきます.
ここでgdbでデバッグするのですがMacにもともと入っているgdbはtargetがmac用になっているのでそれをLinux用に変えてコンパイルしたものを使います.
これで準備完了.CarbonEmacsを立ちあげてM-x cdでLinuxのソースツリーがある場所に移動し,M-x gdbで上のgdbを起動させます.
vmlinuxを読み込ませ,「target remote localhost:(先程のポート番号)」でattachできます.attachした瞬間にVMWare上のLinuxの時が止まるのでおもしろいです.
Emacs + VMWareでこんなふうにKernelの動作を追うことができます.
ところどころoptimizedされて見えなくなっている変数などがありますが,この方法はかなりおもしろいです.
*1:以前まえださんに教えてもらった