デバッグの友。これなしでデバッグを行うことは困難だ。 (printfデバッグという手もあるが、printfを埋め込んで再コンパイルするのは面倒なものだ。) gdbの詳しい説明はマニュアルにに譲るが、以下は使っていて便利なコマンド一覧。 なお、gdbは mule / emacs から M-x gdb として利用すると、ソースファイルを自動で開いてくれたり、ブレークポイントのあるソース行位置まで自動ジャンプしてくれたりするので便利。
gdbは、最初に ~/.gdbinit という設定ファイルを読み込むので、良く使うコマンドは define 〜 end でマクロにしておくと便利かも。
余談:どうして Netscape Communicator のバイナリにはシンボル情報が入っていないんだ〜。
# # debugger fork with mule (for bash) # gdbfork () { tmpfile=`echo gdb.$$.el` opts="" diropts="" # get command line options for i in $* do case $1 in -d) shift diropts=$1 ;; *) opts="$opts $1" ;; esac shift done echo "(gdb \"gdb $opts\")" > $tmpfile if [ x"$diropts"x != x""x ] ; then echo "(split-window-vertically)" >> $tmpfile echo "(dired \"$diropts\")" >> $tmpfile echo "(other-window 1)" >> $tmpfile fi mule -l $tmpfile rm $tmpfileこの関数の使用方法は gdbfork [filename] [corefile] -d [dired-dir] とする。 これで、新しく起動したmuleの内部でgdbが起動している状態になる。
10進数を16進数に変換する csh 用のaliasを以下に示す。
alias tohex 'echo "obase = 16; \!*" | bc'
基数の変更もできるので、16進数の計算もできる。 (ただし、10進数でいうところの10〜15は、16進数では大文字のA〜Fを使って表現すること。) 16進数の計算を行う場合は、以下のように入力して基数を変更する。
obase=16 ibase=16