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コマンド以前に何か行いたいことなんて無いはずだし.