QemuのソースをXcodeでデバッグ

Qemuをハックするために,QemuをXcode上コンパイル,実行出来るようにする. 以下が手順.

  1. XcodeでCreate a new Xcode Projectを選択
  2. Emptyを選択
  3. プロジェクト名を決める
  4. プロジェクトのメタ情報を格納する(.xcodeprojファイル)を選択
  5. Xcode上でQemuのディレクトリごと,Drag & Drop
  6. 上部メニューのqemu-1.7.0(Drag&Dropしたフォルダ名)から,Edit Schemeを選択
  7. InfoタブのExecutableで,Runボタンを押したときに実行するバイナリを指定.今の場合qemu-system-x86-64
  8. 同画面のArgyumentsタブの”Arguments Passwd On Launch”で,実行ファイルに与える引数を指定.例えば「-fda helloos.img」

このままだと,OSのシグナルでブレイクしてしまい,起動するまでひたすらクリックを繰り返すことになるので,Symbolic Breakpointを設定する.

  1. 上部メニュから,Debug->BreakPoints->Create Symbolic BreakPointを選択.
  2. Symbol名にqemu_main(この関数の中でシグナルが発生することが分かっているため)を入力
  3. Add Actionをクリックし,表示されたテキストボックスに,「process handle SIGUSR1 -n true -p true -s false」を入力.そして,Automatically continue after evaluationgにチェックを入れる.
  4. さらに同じ手順でもう一つSymbolic BreakPointを作成し,「process handle SIGUSR2 -n true -p true -s false」(1と2が違うだけ)を作成

以上でブートし,breakもできるようになるはず