学习一门语言,当学习那些基本语法的时候,我们常常会忽略它的程序调试,当程序稍微复杂一点的时候,我们不能保证程序的完全正确,我们会为其发愁,这时,程序的调试就变得相当重要了。
    在erlang环境搭建好之后,它会默认自带一个调试的工具---erlang debugger(这个名字起得很好(^_^)).
    Erlang debugger的简单使用:
    假设我们有一个写好的test.erl.
    1.编译模块。编译模块的时候,应该这样编译
c(test,[debug_info]).
    2.打开debugger。在erlang shell中输入"im()."即可。
    3.设置断点。在打开的monitor中,把左下方的Auto Attach下的三个选项全部选上,即First Call, On Break, On Exit(这个细节是很重要的)。然后选择Module->Interpret Modules,在打开的窗口中,选择test.erl源文件。这时,在刚才的Monitor窗口中,双击左上脚的test,在打开的"View Module test"新窗口中,选择Break->Function Break,选择一个自己的函数(当然,在Break当中,可以选择其他的方式进行断点的设置)。至此,断点设置成功。
    4.开始调试。在erlang shell当中输入要调用的函数(就像平时我们没有调试的时候,直接输入模块调用那样。eg:   test:reverse([1, 2, 3, 4]).  这个是我随便输的)。然后大家在打开的窗口当中就可以调试自己的程序了。
    小结:本文是一个很简单的erlang debugger的使用,还有许多的细节我自己也没有弄懂,但是希望本文能够为大家起到抛砖引玉的作用。具体的调试工具的使用,可以参考: http://www.erlang.org/doc/apps/debugger/debugger_chapter.html

一个参考的视频地址:
 http://files.cnblogs.com/goldli/test_tuple.swf

前提:erl文件  必须用debug_info选项进行编译。否则会出现 Invalid beam file or no abstract code: error

编译方式: make:all([debug_info]). | c(test.erl,debug_info).

基本调试方法:<br>
im/0:打开调试器<br>
i/1 :把文件添加到调试器中<br>
ni  :针对多个Node的用法<br>
n/1 :与i/1相反<br>
nn/1:与ni/1相反<br>
interrepted/0:列出所有要调试的Module<br>
file/1:显示源文件<br>
break/2:添加断点<br>
delete_break/2删除断点<br>
break_in/3:在具体函数中添加断点<br>
del_break_in/3:在具体函数中删除断点<br>
no_break/0:删除所有断点<br>
no_break/1:删除某个Module的所有断点<br>
disable_break/2:使某个模块的断点失效<br>
enable_break/2:恢复某个模块的断点<br>
action_at_break/1:设置断点的状态,实验中发现enable不起作用<br>
all_breaks/0:显示所有的断点状态<br>
all_breaks/1:显示指定所有的断点状态<br>
snapshot/0:回放调试进程信息<br>

转载于:https://www.cnblogs.com/fvsfvs123/p/4143018.html

erlang中如何调试程序相关推荐

  1. Erlang中Eunit基本内容汇总

    Erlang中Eunit基本内容汇总 在你的module中添加: -include_lib("eunit/include/eunit.hrl"). 这样就引入了eunit的头文件, ...

  2. Erlang中一些错误或者异常的标识

    erlang中错误大体分为四种: 1. 编译错误     2. 逻辑错误     3. 运行时错误     4. 用户代码生成的错误 编译错误,主要是编译器检测出的代码语法错误  逻辑错误,是指程序没 ...

  3. erLang中的标点符号

    ErLang中的标点符号  ErLang语法中充满了一些约定.大写字母开头的名字(比如Address),表示一个变量,包括参数.局部变量等:小写字母开头的单词(比如ok),表示一个常量,叫做atom( ...

  4. erlang 中#(井号)号的作用

    表示进制 10> 2#101010. %% 2 进制的 101010 42 11> 8#0677. %% 8 进制的 0677 447 12> 16#AE. %% 16 进制的 AE ...

  5. 【转载】Erlang精彩讨论-回“老赵”关于“Erlang中最大的问题”

    原文:http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-1#comments http:// ...

  6. erlang中,一个小不点引起的读取文件错误

    今天写了一个读取文件的一个小erlang程序,但是就是死活找不出这个程序的问题出在哪里,最后这个问题让我找出了,问题就在于一个小点上".". 开始的程序: %% test.erl ...

  7. Erlang中使用变量的简单示例

    1. 赋值 1> X = 100. 100 以上只是简单的声明了一个变量X,并为其赋值100.记得在以句号结尾.回车后会自动显示当前X的值100. 2.运算 2> X*X*X. 10000 ...

  8. Erlang中的nif

    NIF即是(Native Implemented Function),由c实现的函数.其实即是一些动态库比如So.DLL... nif在erlang的r13b才引进的,是一个比port更简单而且更有效 ...

  9. VS2013中的调试程序的方法

    一.调试方法 1.在程序的必要位置按F9(或用鼠标点击行首作成边框位置)就可设置断点或取消断点). 2.按F5运行程序,程序运行到断点会暂停下来等待用户选择下一步操作. 3.这时    当按F11时单 ...

  10. java erlang 游戏_游戏中最近可达点(用erlang写一个简单算法)

    游戏中有点击障碍点,人物走到离障碍物最近点的算法.我这给一个简单的算法,这个问题可以复杂化,另外这个问题应该由客户端来完成. 如图,玩家在b点,点击了a点,a在一个障碍区(红色,玩家只能在障碍区外移到 ...

最新文章

  1. C#者重建C++之路 - 运行机制的差异
  2. DownloadProvider 源码详细分析
  3. tensorflow lstm 预测_解析seq2seq原理+tensorflow实现
  4. zookeeper的名词复盘-Watcher
  5. 基于MaxCompute搭建社交好友推荐系统
  6. SQL Server检索存储过程的结果集
  7. MUI - 自动轮播图 实现
  8. Java图形界面设计——substance皮肤
  9. Spring boot Mybatis 整合(完整版)
  10. 《集体智慧编程》读书笔记2
  11. php降序怎写,php 数组排序(升序、降序及相关问题)
  12. PHP文件流下载内容
  13. 分享微软官方Demo用的SharePoint 2010, Exchange 2010, Lync 2010虚拟机
  14. 大数据技术原理与应用(最后三天备考!!!)
  15. 研究生论文写作心得体会
  16. 非Build Rebuild--Compilation of Maven projects is supported only if external build is started from an
  17. 社区团购小程序有哪些赚钱方式
  18. 魔兽世界服务器同时在线人数,厉害了!《魔兽世界》怀旧服同时在线玩家已超过百万...
  19. 如何定制一款个性化的 WinPE
  20. 【Java高级】多线程基础

热门文章

  1. 搜狗手机输入法java_手机搜狗输入法制作个性皮肤的方法
  2. java参数化查询_【转】参数化查询为什么能够防止SQL注入
  3. gpu云服务器运行游戏_99元起!华为云鲲鹏云手机正式发布:流畅运行大型游戏...
  4. 【IDEA】jsp页面中的代码一不小心变成黄色,代码被识别成sql脚本解决办法
  5. 五大列级庄_走进法国波尔多五大一级酒庄
  6. 主梁弹性模量计算_桥梁支座详解全攻略!图文+计算详解,值得收藏!
  7. 微型计算机主机作用,微型计算机的主机包括()。
  8. Tensor is not an element of this graph 解决方法
  9. 电脑已安装软件提取安装包_SPSS 24,软件安装包及安装教程
  10. 最短路应用 —— 解决某些计数、数论问题