miau's blog?

DDD - Data Display Debugger

もう更新が止まってるような古いもの発掘シリーズ第二段。いちおう 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

みたいな感じ。

■スクリーンショット

ということで、ちょっとそれっぽいデータ構造作って試してみました。

ddd1拡大表示

変数名を右クリックして「display」を選ぶだけ。あとはダブルクリックでリファレンスが展開されていく、と。こんな風に Perl のデータ構造をグラフィカル表示するツールって他に触ったことなかったので、ちょっと新鮮。

これ使えばありがちなリファレンスのエラーも発見しやすいかなー?ということで、同じ変数を参照しちゃってるコードを書いて、可視化してみた。

ddd1拡大表示

だめぽ。設定画面(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 とか検索系コマンドで関数やら定数の定義を探すのは、給料泥棒に近い行為ですよ。
posted at 20:34:05 on 2007-07-28 by miau - Category: Perl No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。