经常的时候看大型工程的时候 碰到一二个地方实在不明白他是如何运作的 这时候最好的工具就是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
把以上脚本改下就方便多了。
分享到:
相关推荐
Erlang是一种面向并发的、函数式编程语言,由...同时,了解Erlang环境变量的设置对于日常使用和调试Erlang应用程序至关重要。通过脚本化安装和环境变量管理,我们可以更加高效地利用Erlang构建和维护复杂的分布式系统。
1. **erts**:Erlang Run-Time System,这是Erlang VM(虚拟机)的核心,包括解释器、垃圾收集器、调度器等,它们使得Erlang程序能够高效运行。 2. **kernel**:基础操作系统接口,提供进程管理、文件操作、网络...
1. **性能提升**:Erlang 19.3 带来了多项性能优化,包括更快的字节码编译器和内存管理改进,这使得程序运行更高效,响应速度更快。 2. **错误处理和调试**:新版本可能包含更好的错误报告和调试工具,帮助开发者...
Erlang是一种通用的编程语言,以其并发性、容错性和分布式特性而闻名,而RabbitMQ则是基于Erlang构建的一个开源消息代理,用于处理应用程序之间的消息传递。 Erlang 22版本引入了一些关键改进,包括: 1. **性能...
Python 脚本在这里扮演了关键角色,它读取 Erlang 的已编译二进制 BEAM 文件,并将其中的调试信息转化为 Sourcetrail 数据库能理解的格式。 Erlang 是一种并发、分布式和热重启支持的函数式编程语言,广泛应用于...
它包括自己的分布式数据库、与其他语言接口的应用程序、调试和发布处理工具。 Erlang/OTP 可用作大多数操作系统包管理器的预构建二进制包。 您可以使用 Kerl,该脚本可让您使用一些命令轻松构建 Erlang。 我们认真...
socat 工具则是用来在不同协议之间进行数据传输的实用程序,对于在 Linux 系统中连接和通信非常有用。 首先,我们来详细了解下 RabbitMQ 的安装过程。在 CentOS 7 上安装 RabbitMQ 3.8.9,你需要先确保系统是最新...
**erlstack-mode** 是一个专门为 **Erlang** 开发者设计的 **Emacs** 次模式,它的主要功能是帮助用户更方便地预览和理解在Erlang程序运行过程中出现的堆栈跟踪(stacktrace)信息。这个模式极大地提升了开发者在...
错误默认该项目旨在包括大量用于调试,开发和测试erlang项目的帮助程序。user_default user_default是一个文件,可以在其中调用所有导出的函数而无需从外壳程序获取模块前缀的情况。 有关user_default的文档,请在...
- **模块**: Erlang程序的基本单位,包含一组相关的函数。 - **函数**: 模块内的可执行代码块,用于实现特定功能。 - 函数定义格式:`function_name(args) -> expression.` **1.2.3 元子 (Atoms)** - **定义**: ...
OTP(Open Telecommunications Platform)是Erlang编程语言的核心组件,提供了一整套构建...这对于开发和调试Erlang应用程序尤其重要。同时,这也是学习Erlang和OTP架构的好方法,因为你可以深入了解其内部工作原理。
通过 `erl` 命令行工具可以启动 Erlang shell,进行交互式测试或调试。 4. **部署策略** Sqor 可能采用以下部署策略: - **热更新**:通过 `rpc:call/4` 或 `net_kernel:connect_node/1` 等远程过程调用在运行时...
1. **Erlang OTP(Open Telecom Platform)框架**:Erlang_server很可能基于OTP设计,这是一套用于构建高效、可靠、可维护的Erlang应用程序的标准库。它包括了应用管理、错误处理、进程间通信、分布式计算等多个组件...
9. **makefiles**和构建脚本:用于编译和安装Erlang/OTP的配置文件。 要编译和安装Erlang/OTP,你需要按照以下步骤操作: 1. 解压`otp_src_25.0.3.tar.gz`到一个工作目录。 2. 进入解压后的目录,执行配置脚本,...
`otp_src_24.1`中的源代码可能包括Erlang VM的实现、各种库的源码以及构建脚本等。如果你需要深入研究Erlang OTP的工作原理,或者想要定制自己的Erlang环境,解压这个压缩包并阅读源码是一个很好的起点。同时,配合...
8. **测试与调试**:MATLAB提供了一系列工具来进行代码测试和调试,确保Erlang-Bloss公式实现的正确性。开发者可能已经编写了单元测试和基准测试来验证代码的性能和准确性。 9. **扩展性**:由于MATLAB支持与其他...
开发者可能需要这些源码来编译自定义版本的Erlang VM,或者为了调试和优化RabbitMQ的性能。 在"otp_src_25.1.1"这个压缩包中,我们可以期待找到以下内容: 1. Erlang的源代码,包括虚拟机(VM)、编译器、标准库等...