经
常的时候看大型工程的时候 碰到一二个地方实在不明白他是如何运作的 这时候最好的工具就是debugger 如gdb,的backtrace
可以得到完整的函数调用栈。在linux下推荐使用ddd, 俺的centos5 下标准版本没有安装ddd
顺手下载个安装就好了(标准版本却个motif-devel yum下就好)。ddd图形界面方便查看函数和变量,还有点击跳转功能。
附上几个调试erlang的脚本,希望能够方便大家。
1.
[root@test98 ~]# cat gdb_beam
#! /bin/bash
ddd -x gdb.init /usr/local/lib/erlang/erts-5.5.5/bin/beam
2.
[root@test98 ~]# cat gdb.init
set arg -- -root /usr/local/lib/erlang -progname erl -- -home /root
3.
[root@test98 ~]# tail .bash_profile -n 13
export PATH=$PATH:/usr/local/lib/erlang/erts-5.5.5/bin
ROOTDIR=/usr/local/lib/erlang
BINDIR=$ROOTDIR/erts-5.5.5/bin
EMU=beam
PROGNAME=`echo $0 | sed 's/.*\///'`
export EMU
export ROOTDIR
export BINDIR
export PROGNAME
export EDITOR=vim
export LANG=utf8
上面的脚本是针对beam 的。
如果你要调试beam.smp beam.hybrid 可以erl -smp true +K true -emu_args 得到参数
Executing: /usr/local/lib/erlang/erts-5.5.5/bin/beam.smp
/usr/local/lib/erlang/erts-5.5.5/bin/beam.smp -K true -- -root
/usr/local/lib/erlang -progname erl -- -home /root -smp true
把以上脚本改下就方便多了。