もう更新が止まってるような古いもの発掘シリーズ第二段。いちおう Perl にも関連。
DDD - Data Display Debugger - GNU Project - Free Software Foundation (FSF)
GNU DDD is a graphical front-end for command-line debuggers such as GDB, DBX,
WDB, Ladebug, JDB, XDB, the Perl debugger, the bash debugger, or the Python
debugger. Besides ``usual'' front-end features such as viewing source texts,
DDD has become famous through its interactive graphical data display, where
data structures are displayed as graphs.
デバッガのフロントエンドってことだけど、スクリーンショット(
これとか
これ)にあるように、データの可視化という観点で面白そうなので試してみました。
■インストール方法
Ubuntu 使ってるけど、apt で普通に入りました。
■起動方法(Perl)
ddd --perl hoge.pl
みたいな感じ。
■スクリーンショット
ということで、ちょっとそれっぽいデータ構造作って試してみました。

(
拡大表示)
変数名を右クリックして「display」を選ぶだけ。あとはダブルクリックでリファレンスが展開されていく、と。こんな風に Perl のデータ構造をグラフィカル表示するツールって他に触ったことなかったので、ちょっと新鮮。
これ使えばありがちなリファレンスのエラーも発見しやすいかなー?ということで、同じ変数を参照しちゃってるコードを書いて、可視化してみた。

(
拡大表示)
だめぽ。設定画面(Edit→Preferences→Data)で「Detect Aliases (shared data structures)」ってあるけど、同一オブジェクトへのリファレンスを解決してくれるわけではないの?と思って
マニュアル 見ると、ちゃんと書いてあった。
Alias detection requires that the current programming language provides
a means to determine the address of an arbitrary data object. Currently,
only C, C++, and Java are supported.
Perl は未対応、と。
グラフ表示とかも試したかったけど、それっぽいデータを準備するのが面倒だったんでとりあえず保留。(でもサンプル見たら三角関数っぽい曲線だった。これくらいなら簡単に作れたな・・・。)まあ余裕できたらやります。
■デバッガとしては?
ステップ実行については perl -d を使い慣れてるからどうでもよくて。ブレークポイントの設定がいくらか楽って程度?
まあデバッグ機能を使うために EPIC の環境を構築するよりはお手軽だろうけど、EPIC は IDE なんでそれと比較するのもちょっと変な話。
■自分用メモ
設定関連のメモ。
・Edit→Preferences→Data
Layout は Automatic のほうが見やすいかも。
Compact はどういう意味があるのかわからなかった。
・Edit→Preferences→Fonts
Default Font、Variable Width、Fixed Width は 80 に。
Data は細部まで見やすくするなら 120、そうでなければ 80 で。
■ついでに一言
ちなみに 2ch のどこかのスレ→
ソースコードを読むための技術→DDDのページに行き着いたわけですが。「ソースコードを読むための技術」に載ってる ctags はこの blog でも何度も扱ってるけど、テキストエディタ派の人は絶対に使わないと損です。Grep とか検索系コマンドで関数やら定数の定義を探すのは、給料泥棒に近い行為ですよ。