`
mryufeng
  • 浏览: 982386 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

find out which line my Erlang program crash

阅读更多
litao同学告诉我的:

The run-time system's error reports tell you which function crashed, but not the line number. Consider this module:

        -module(crash).
        -export([f/0]).

        f() ->
          g().

        g() ->
          A = 4,
          b = 5,  % Error is on this line.
          A.
       

        3> crash:f().
        ** exited: {{badmatch,5},[{crash,g,0},{shell,exprs,6},{shell,eval_loop,3}]} **
       

The crash message tells us that the crash was in the function crash:g/1, and that it was a badmatch. For programs with short functions, this is enough information for an experienced programmer to find the problem.

In cases where you want more information, there are two options. The first is to use the erlang debugger to single-step the program.

Another option is to compile your code using the smart exceptions package, available from the jungerl. Smart exceptions then provide line number information:

        4> c(crash, [{parse_transform, smart_exceptions}]).   
        {ok,crash}
        5> crash:f().
        ** exited: {{crash,g,0},{line,9},match,[5]} **

smart_exception包在这里下载  http://pepper.sherry.jp/mikage/smart_exceptions.tar.gz
这个包的年代比较久了  makefile有些问题
这样编译 erlc *.erl 一堆警告不怕。

分享到:
评论
2 楼 mryufeng 2009-07-21  
用R12B
1 楼 ipsound 2009-07-21  
我尝试了一下,发现有2个文件编译不过:mapform0.erl和smart_exceptions.erl。
我是windows环境,R13B01。

错误是 when constant(C) 这句造成的:illegal guard expression。

不知道应该怎么修改?

相关推荐

    erlang编程 Introducing Erlang

    Erlang采用“let it crash”哲学,鼓励程序在遇到错误时立即崩溃,而不是尝试恢复。这样可以快速暴露问题,便于系统自我修复。Supervision树(Supervisor Trees)是处理故障的一种机制,它能自动重启失败的进程。 #...

    erlang资源

    3. **错误处理与容错**:Erlang推崇“let it crash”哲学,鼓励程序在遇到错误时快速失败并重启,而不是尝试修复。书里可能会讨论如何构建健壮的系统,利用Erlang的故障隔离特性。 4. **分布式编程**:Erlang进程...

    xiandiao_erlang_Erlang课后习题_

    5. **简洁的错误处理**:Erlang使用“let it crash”哲学,鼓励快速失败和快速恢复。错误通常通过抛出异常来处理,而不是通过复杂的错误检查逻辑。 6. **模式匹配**:Erlang的函数调用允许模式匹配,使得解构复杂...

    Erlang深度分析

    调试是软件开发中不可或缺的环节,Erlang提供了许多强大的调试工具,例如Erlang的crash dump分析工具、snooper消息监听器等,它们帮助开发者在开发和测试阶段快速定位和解决问题。 #### 4. 并发与网络 ##### 4.1 ...

    erlang25.0 windows版本

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...

    erlang on many core

    The number of processing units integrated into a single die or package is increasing. We will see more and more general-purpose or even embedded processors with dozens, hundreds, or even thousands of ...

    erlang深度分析.pdf

    Erlang遵循“让它失败”原则(Let It Crash),这种设计哲学鼓励系统在出现故障时自动重启,而不是进入不稳定状态。 #### 18. 开发环境和版本控制 Erlang通过内置工具和集成开发环境(IDE)支持便捷的代码管理。...

    erlang test 生成 dets

    在Erlang中,你可以使用`file:open/2`和`io:get_line/1`读取这个文件,然后将读取到的数字转换为Erlang术语,再插入到DETs表中。 在实际测试中,可能还需要关注性能、并发操作以及错误处理等方面。例如,使用`etap`...

    erlang_版本24.3.4.4

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

    erlang22最新下载包

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson为了实现分布式实时、高可靠性系统而开发。Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等...

    erlang安装包.zip

    erlang安装包

    Erlang官网下载过慢

    Erlang是一种面向并发的、函数式编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。在IT行业中,Erlang因其强大的实时性和处理大量并发连接的能力而被广泛应用于电信、互联网基础设施和实时系统。RabbitMQ...

    erlang9.rar

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时计算系统。它的设计目标是创建一个高可用性、容错性强、低延迟的系统。Erlang9指的是Erlang/OTP(Open Telephony Platform)的第9个主要版本。OTP是Erlang...

    Erlang 20.3linux安装包

    Erlang是一种面向并发的、函数式编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。在IT行业中,Erlang因其强大的实时性、并发性和内存管理机制而被广泛应用于网络通信、数据库系统以及消息中间件,如...

    ErlangB和ErlangC计算工具(exe可执行文件+excel两个)

    Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...

    erlang otp25 win安装包

    erlang otp25 win安装包

    两本erlang电子书

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。OTP(Open Telecom Platform)是与Erlang一起使用的框架和库,旨在简化并发应用程序的设计和维护...

    erlang programming

    Erlang是一种面向并发的、函数式编程语言,主要用于构建高度可扩展的、容错性强的分布式系统。在“erlang programming”这个主题下,我们可以深入探讨以下几个关键知识点: 1. **Erlang语言基础**:Erlang是瑞典...

    Programming Erlang

    Erlang的错误处理机制鼓励“let it crash”哲学,即快速失败并恢复,以保持系统的整体稳定性。 最后,书中包含了一些实际项目案例,如电话交换机系统,展示了Erlang在实际场景中的应用。通过这些案例,读者可以更好...

Global site tag (gtag.js) - Google Analytics