どうやってソースコードデバッグまで持って行ったか

さて昨日の晩、というか本日未明に書いたソースコードデバッグの短報です。
月、火、時間をなかなかとれずにいた間に、AXFとELFに関して色々仮説を立てて実験してみましたが、全部だめでした
結論

  • AXFはELFである。
  • LPCxressoはAXFをFlashに書けるが、TOPPERS/ASPが生成するELFはFlashに書けない。

これについてまだ、おぼろげな仮説はあるのですが、時間が過ぎ去るばかりなので追求は止めます。
さて、LPCxpressoのネイティブのサンプルがあまりにスルッと動くので見落としてしまいがちですが、実はAXFをFlashに書く必要は全然ありません。LPCxpresso IDEはプロジェクト管理にManaged Projectを使っているので気づきにくいためです。少し調べてみると、どうやらGDBがターゲットにプログラムをロードするときに以下の2ステップを踏んでいるようです。

  1. AXFをFlashに焼く
  2. AXFのシンボルをGDBに読み込む。

TOPPERS/ASPプログラムは、ManagedではなくMakefile projectです*1。そのため、LPCxpressoがManaged Projectでやっていることと同等のことを行うには、一手間かける必要があります。つまり、

  1. aspからasp.binを生成する
  2. asp.binをFlashに手動で焼く
  3. aspのシンボルをGDBに読み込む

(追記:シンボルの読み込みは、Debug Configurationを開いてGDBスクリプトを編集する)
これでステップ実行程度はできるようになりました。まだ任意位置での停止ができませんが、何らかの強い理由が無い限り、私はこのあたりで手を引こうと思っています。12月にかけてやることが多すぎます。
時々繰り返し書いていることですが、Eclipseはあまりにも複雑で、自分のツールとして磨こうとすると、無制限に時間を要求します。お金でサポートをしてくれるベンダーを探すのが一番です。
私は説明のためにEclipse / GDBデバッグのやりかたを書くことがありますが、ほとんどの場合、自分はGDBコマンドラインで使っています。前者は自分のソフトを広く使ってもらうための広報宣伝活動みたいなものです。

*1:TOPPERSアプリをManaged projectとして管理するIDEとしてはPizzaFactoryがある