- linuxをgdbでデバッグトレースしたい!!
- ansibleがなんとあるので使うといい感じにできる
# ansible
# virshを使ったやりかた
- まずdebug buildしたいfedoraのvmをつくる
- 大学のdalmoreサーバーでやると便利
- 結構パワーが必要なので、ansibleのファイルにある通りVMの設定を書き換える
- CPUのコア数を8コア
- HDDの容量を30GBは確保する
- cpuのコア数はvirshのxmlを書き換える
- HDDの容量は、qemu-imgでresizeしたあとに、VMにログインしてファイルシステムを拡張する
- ここまで準備が出来たら実行可能! VMのmac addressをakatsukiに登録して、別のマシンから以下のコマンドでansibleを実行する
- 実行する前にVMのipを書いたhostsファイルを用意する
- main.ymlのユーザー名を変更するなどもしておく
|
|
- 完了したらビルドしたファイルをyomitanなどに転送する
|
|
- ここのlocalhostはVMのIPとかに変えておこう。あとユーザーとかもそんな感じで…
# 起動するkernelを切り替える
- ansibleをかけただけでは、VMが起動するkernelが切り替わってないので切り替える必要がある
- ちまたでは
awk
を使って番号を決めてgrub2-
で解決する方法が出回っている- 最近のFedoraでは
grub2.config
をいくらgrepしてもkernel情報が乗ってない
- 最近のFedoraでは
- 最近のfedoraでは次の通りにする
# kernelの変更
$ grubby --info=ALL
を実行して、切り替えたいkernelを探す$grubby --set-default /boot/vmlinuz-4.2.0-1.fc23.x86_64
で切り替える
# 参考
# gdbでdebugするには(学内限定)
- debugしたいvmを
ie-virsh define-gdb
でdefineしなおす- すでにdefineしていたらundefineする
- gdbのportが開放されたxmlファイルが生成される
ie-virsh dumpxml 04(defineした番号)
で、gdbのportを確認するie-virsh strart 04
して起動する- kernelから転送したvmlinuxをgdbで
gdb vmlinux
する - breakpointを設定する
target remote localhost:(確認したport)
にするとVMに接続されるc
してあとは自由に!!
# Tips
- dalmoreのvirshのxmlを書き換えるにはroot権限が必要