CDTのgdbinitサポートは寒い
デバッグの起動構成で書く gdbinit は,最終的に --command=... の形でgdb.exeに渡される.
まあ,これはこれで素直な実装といえなくもないが,組込みでは今ひとつ使いづらい.
組込み用のgdbスタブは,大抵monitorコマンドで低レベルのメモリアクセスやhaltなどを行える.
しかし,monitorコマンドを使うには,target remoteを指定しなければならない.
CDTの建前として,target remote を行うのは,CDT自身.なのに,gdbinit に書かなければならない.寒い.
CDTの設定とgdbinitの記述に齟齬が生じる可能性もあり,危険.
残念ながら,今日現在のPizzaFactory3もこの寒さを継承してしまっている.
早速改善作業開始.
作業完了
話は簡単.targetコマンドとloadコマンドの間に,sourceコマンドでgdbinit相当のファイルを読ませればよい.
GDB/MIの枠組みで奇麗に済ますには行毎に読んで-interpreter-execコマンドを使うのだろうけれど,そこまでやる意義はたぶん無い.
MIはconsole用のコマンドを理解できるので,
if (gdbinit != null) { MICommand source = new MICommand(version, "source", new String[] { gdbinit }); //$NON-NLS-1$ session.postCommand(source); }
とだけしておく.ついでに,gdbのコマンドラインオプションを-nxにしておく.ヘタに.gdbinitを読めるようにしておくと,むしろ混乱するだろうという読み.組込みターゲットで,targetコマンド以前に何か行いたいことなんて無いはずだし.