面倒な設定情報は,小人さんに喋らせればいいじゃない?

組込み開発でGDBを使うと面倒なのが target remote の設定.


AndroidSDKでは,ADBSERVERとかいうのと拡張された起動構成が善きにはからってくれて,デバッグ開始時に手元にありそうなエミュレータ/実機をリスティングしてくれる.よくできている.


良くはできているが,真似するのは癪だ.w
素直になって考えてみても,gdbproxy 群は monitor コマンドで挙動を変化させるものや telnet を別系統で持っているものなどバラエティ豊富なので,その辺りへの拡張手段も考えると,起動構成にリンクさせるのでは汎用性が殺がれる.


そんなわけで,gdbproxyを探し出して表示するEclipseプラグインというのを作ってみた.

存在しそうなポートに片っ端からポートスキャンするという荒手も一瞬頭をよぎったが,パーソナルファイアウォール全盛の昨今において,その手はあまりにリスキーなので止めた.ウイルス認定されてはかなわない.
基幹技術はIETF ZeroConf,Mac的にはBonjourLinux方面ではAvahiとかがサポートしているアレを使う.UPnPが嫌いというわけではない.いちいちXMLなんか書いてられるか面倒だ,というだけ.

gdbproxyの動作するIPアドレスとポートはmDNSから取ってこれる.あとはgdbのランタイムとデバッグ対象のバイナリを指定する.通常の起動構成と順序が逆になるが,おそらくこのほうがユーザビリティが高いと思う.CView がバイナリを指していた場合にはその情報も起動構成にいれるというのもできる気がするけれど,その辺りは追々.
gdbproxyが落ちると,表示からも消えるが,起動構成は残る.この辺も使われ方や通信路の信頼性で要求が異なる気はする.Preferenceで設定できると嬉しいのだろう.たぶん.


ちなみに,「このブログに書いている == あの製品に組み込まれるのはしばらく先の予定」.