« 2004年7月 | トップページ | 2004年9月 »

2004.08.30

デジカメにはまる

この記事は My Favorite Pictures へ移動しました。

| | コメント (0) | トラックバック (0)

2004.08.07

デバッグイベントの出力

今時のプログラミングはソースレベルのデバッグが普通なのでデバッグに困らないと思うのですが、私が主にやっている分野はネットワーク通信だのシリアル通信だのといったリアルタイム処理の分野が多いのでソースレベルでバッグでは対応できない場合が多くあります。そこでデバッグ用のイベント出力を多用します。この方法によるデバッグ出力は厳密にはオーバーヘッドがあるのですが、やたら書き出さないように注意をすれば大丈夫です。

C++ではWindowsのOutputDebugStringを使いますが、VBにも同様の機能がありますね。マックの開発環境にも同様の機能があります。

通常は開発環境で実行する時に用意されているイベントウィンドウの表示を見ます。逆に言えば開発環境がないと見られません。私を含めて普通は本番リリース時にもいちいちデバッグ出力を削除しないことも多いと思いますが、本番運用の環境でこの出力が見たいと思うことはありませんか?

ソフトによってははじめからトラブル時の対応のために本番環境でもログを残すように作ることもあるのですが、一般的にはそこまではやりません。そこで本番環境でのトラブル対応のために現地でデバッグ出力を得るための方法を研究してみようと思いました。インターネットを検索していくつかの情報を見つけたのですが、それ以上に役に立ったのが次の本です。

デバッガの理論と実装 Jonathan B.Rosenberg著/吉川邦夫訳

以前からデバッガってどうやって作るんだろうと疑問に思っていたのですが、その疑問のほとんどを解消してくれました。もちろん、デバッグ出力の取得方法もわかり、簡単なツールを作ることができました。
非常にいい本なんですが、残念ながらこの本は絶版のようですね。インターネット上の書店にはどこにも事故がないようです。デバッガの仕組みについて詳しく解説されている唯一の本だと思うのですが、内容が特殊なだけに仕方ないことかもしれません。興味がある人は探してみる価値があると思いますよ。

そんなわけで自分で作った簡単なツールを使っているのですが、仕事としてではなく片手間に作ったものですから使い勝手は?です。いずれはもっとちゃんとしたものにしたいと思いつつも日々の忙しさに紛れて使い続けています。

そんな時にとあるメーリングリストでDebugViewというソフトについて知りました。このソフトはSysInternalというサイトで公開されていてほかにもいろいろなツールがあります。

なかなか軽快なソフトではありますが、不満はあります。一番の不満は特定のソフトを選んでログをとれないことです。プロセスIDを使ってフィルターをかけて表示すると言うことはできるのですが、実行してみないとプロセスIDはわからないですよね。

私が一番やりたいのはログ出力の機能をアプリケーションに組み込まないでデバッグ出力を自動的にファイルに保存していくような仕組みを作りたいのです。そのためにはいくつか機能が必要です。

・対象のアプリケーションが起動したらログの取り込みを始める。
・デバッグ情報をファイルに保存する。
・保存するファイルが大きくなりすぎないように定期的にファイルを分割。
・上記動作をユーザーには全く意識させずに行う。

DebugView以外にもインターネットで検索すると私の欲しい機能のかなりの部分をサポートしてくれるソフトはいくつかあるようですが、すべての機能を満足しているわけではありません。
もう一つ大きな問題はライセンスの問題です。使えそうなソフトはシェアウェアか商品です。社内で使うだけなら購入すればいいのですが、時にはユーザーの本番環境のマシンに組み込んだりする必要があるのでそうなるとライセンスの問題がありますから。
それにユーザーに全く意識させないというのが意外に難問です。これをクリアしているものは今のところ見つかりません。

というわけで今後も時間を見つけてオリジナルツールの開発は進めていくつもりです。


| | コメント (0) | トラックバック (0)

« 2004年7月 | トップページ | 2004年9月 »