GDB スタブを書いてみよう その11

まずは細かな TODO を片付ける。

  • gdbCatchException の処理共通化
  • 全ての割り込みハンドラに対応する
    • if (remote_debug)
  • 一番最初の breakpoint exception で stub ハンドラをインストール
  • breakpoint() 関数の追加

行番号が表示されない問題

以下のような条件をそろえているのにうまくいかない。

  • -g つけてる
  • objdump で行番号情報が見える


これは手詰まりと感じていたのだがふと Mingw GDB を wine で動かしてみた。7.0 は動かないので古いバージョンで

Program received signal SIGSEGV, Segmentation fault.
testClassMutex () at mutex.cpp:132
132         *p = 1;

ありゃ。簡単に出てしまった。つまり GDB が悪かったという結論になる。
Mingw GDB と自前でビルドした GDB

  • 6.3 : This GDB was configured as "i686-pc-mingw32"...
  • 7.0.1 : This GDB was configured as "--host=x86_64-unknown-linux-gnu --target=i586-mingw32msvc".

という違いがある。


7.0.1 を i686-pc-mingw32 でビルドしてみたが行番号は表示されなかった。
gdb 6.3 はうまくビルドできない。
Mingw のサイトからソースを持ってきても同じ。


このまま wine で使い続けるか。GDB 6.3 を Mingw target にビルドする必要がある。

次の一手

  • 行番号