Diary/2007-2-5
XML-RPCでgdbを使う
いろいろなアーキテクチャをテストするためのというか研究のターゲットシミュレータ環境としてMICSというのを作り中.
...なのだけど,gdbと連携してCPUの動作をシミュレーションするための
モジュールの作成のデバッグが結構面倒だった.
というのも,MICSは,WindowsのEclipseで書いていて,
対象としている各種アーキテクチャ向けのgdbは,
同じコンピュータのcoLinux環境で動作しているので,
いったりきたりの手間が,なかなか馬鹿にならない.
というわけで,gdbをXML-RPCでラップしてみたところ,これがなかなか便利.
XML-RPCのコードでは,
http://ws.apache.org/xmlrpc/xmlrpc2/
を利用しているので,やりとりできる型は,
http://ws.apache.org/xmlrpc/xmlrpc2/types.html
に限定されるけど,適当にラップすればいい話.
byte[]配列は,エンコード/デコードして送受信してくれるので
gdbでデバッグする対象コードをサーバに転送することもできる.
XML-RPCみたいな疎な結合で切ってみると,
関係ないはずのクラス同士が,
意外に密な結合を必要をしているのがあきらかになって
自分の設計の悪さがよくわかる.
...と,作ってみたものの,
サーバ側ではgdbを実行するために
与えられたパスの子プロセスを生成しているので,
悪意のあるアクセスをされるとかなり危険かも.
一応,コマンド末尾がgdbでない場合とパス内に空白がある場合には,
子プロセスを生成しないようにはしているけど...
と書きながら,かなり危ないことを思いついてしまった.
Copyright (c) 2001-2008 Takefumi MIYOSHI, All rights reserved