netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2005-11-02 [長年日記] ▲
_ [論文] デバッグ用のスクリプト ▲
Guillaume Marceau, Gregory H. Cooper, Shriram Krishnamurthi, Steven P. Reiss:A Dataflow Language for Scriptable Debugging. Proceedings of ASE 2004, pp.218-227.
なんでデータフロー言語という名前が付いてるのだろう,というのがふと気になって前に読んだのをもう一度読み直した.
FrTimeという scheme 系の言語でプログラムの状態を監視し,制約検査を行うのだが,FrTime は,プログラム内部の状態変数に対して, その値を常に反映するような変数を定義することができるらしい(AspectJのargsやthisなどはその時点での値にアクセスできるだけなので,だいぶ意味合いが違う).で,この変数を使うと,プログラムの状態を常に反映した条件式が書けるので,プログラムが何らかの制約違反を起こした場合に即座に検知することができる.
"dataflow language" というのは,プログラム中のデータが,検査式に直接接続されているという意味合いで,他の言語などで,情報集めのための文をあちこちに埋め込む必要がなくて嬉しい,とかいう話らしい.
_ [論文]プログラム中の実行パスの表現 ▲
B. Bruegge and P. Hibbard. Generalized path expressions: A high level debugging mechanism.
In Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering Symposium on High-level Debugging, pages 34-44, 1983.
プログラムのパスを正規表現に近い形で記述し,そのとおりにプログラムが動いているかどうかをテストする. 呼び出されうるメソッドの列なんかを正規表現とかオートマトンとかで書くこと自体は(今となっては)そんなに珍しくないのだが,これはwhile文とかまで記述対象にできるところが面白い.
CHECKPATH Loop {WhlleLoop[ACT(Whileloop) < 6] | PlaceLines}
という記述を行うと,PlaceLinesメソッドが呼ばれるまでは while 文のループが6回以上起きてはいけない,とかいった条件になる.検出する条件自体はブレークポイントのループカウント+条件付ブレークポイントで普通に実現可能な機能かもしれないが,記法は何かに使えるかも?