Atton
23 May 2015
atton
64bit 対応の xv6 を読む
swetland/xv6 が 64bit 対応しているようなので gdb で追おうとしました。
しかし 16 -> 32 -> 64 と mode を変える関係で architecture の値が変わってしまって素直に追えない問題が。 具体的には gdb で attach して b main して continue しても止まりません。
解決法として、gdb を2つ使って
- make qemu-nox-gdb
- 1つ目の gdb (set architecture i8086) で attach
- 1つ目の gdb で 32bit の最後の ljmp まで進める
- 2つ目の gdb(set architecture i386:x86-64) を起動。まだ attach できない
- 1つ目の gdb を continue 。 architecture が違うのでこれ以上は追えないから閉じる
- 2つ目の gdb が 64bit mode で attach される
- 2つ目の gdb は b main するときちんと止まる
とすると追えました。
詳細は ブログ にまとめました。
blog comments powered by Disqus