erlang中如何调试程序
学习一门语言,当学习那些基本语法的时候,我们常常会忽略它的程序调试,当程序稍微复杂一点的时候,我们不能保证程序的完全正确,我们会为其发愁,这时,程序的调试就变得相当重要了。
在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中如何调试程序相关推荐
- Erlang中Eunit基本内容汇总
Erlang中Eunit基本内容汇总 在你的module中添加: -include_lib("eunit/include/eunit.hrl"). 这样就引入了eunit的头文件, ...
- Erlang中一些错误或者异常的标识
erlang中错误大体分为四种: 1. 编译错误 2. 逻辑错误 3. 运行时错误 4. 用户代码生成的错误 编译错误,主要是编译器检测出的代码语法错误 逻辑错误,是指程序没 ...
- erLang中的标点符号
ErLang中的标点符号 ErLang语法中充满了一些约定.大写字母开头的名字(比如Address),表示一个变量,包括参数.局部变量等:小写字母开头的单词(比如ok),表示一个常量,叫做atom( ...
- erlang 中#(井号)号的作用
表示进制 10> 2#101010. %% 2 进制的 101010 42 11> 8#0677. %% 8 进制的 0677 447 12> 16#AE. %% 16 进制的 AE ...
- 【转载】Erlang精彩讨论-回“老赵”关于“Erlang中最大的问题”
原文:http://erlang-china.org/study/puzzle-in-erlang_pattern_match.html/comment-page-1#comments http:// ...
- erlang中,一个小不点引起的读取文件错误
今天写了一个读取文件的一个小erlang程序,但是就是死活找不出这个程序的问题出在哪里,最后这个问题让我找出了,问题就在于一个小点上".". 开始的程序: %% test.erl ...
- Erlang中使用变量的简单示例
1. 赋值 1> X = 100. 100 以上只是简单的声明了一个变量X,并为其赋值100.记得在以句号结尾.回车后会自动显示当前X的值100. 2.运算 2> X*X*X. 10000 ...
- Erlang中的nif
NIF即是(Native Implemented Function),由c实现的函数.其实即是一些动态库比如So.DLL... nif在erlang的r13b才引进的,是一个比port更简单而且更有效 ...
- VS2013中的调试程序的方法
一.调试方法 1.在程序的必要位置按F9(或用鼠标点击行首作成边框位置)就可设置断点或取消断点). 2.按F5运行程序,程序运行到断点会暂停下来等待用户选择下一步操作. 3.这时 当按F11时单 ...
- java erlang 游戏_游戏中最近可达点(用erlang写一个简单算法)
游戏中有点击障碍点,人物走到离障碍物最近点的算法.我这给一个简单的算法,这个问题可以复杂化,另外这个问题应该由客户端来完成. 如图,玩家在b点,点击了a点,a在一个障碍区(红色,玩家只能在障碍区外移到 ...
最新文章
- C#者重建C++之路 - 运行机制的差异
- DownloadProvider 源码详细分析
- tensorflow lstm 预测_解析seq2seq原理+tensorflow实现
- zookeeper的名词复盘-Watcher
- 基于MaxCompute搭建社交好友推荐系统
- SQL Server检索存储过程的结果集
- MUI - 自动轮播图 实现
- Java图形界面设计——substance皮肤
- Spring boot Mybatis 整合(完整版)
- 《集体智慧编程》读书笔记2
- php降序怎写,php 数组排序(升序、降序及相关问题)
- PHP文件流下载内容
- 分享微软官方Demo用的SharePoint 2010, Exchange 2010, Lync 2010虚拟机
- 大数据技术原理与应用(最后三天备考!!!)
- 研究生论文写作心得体会
- 非Build Rebuild--Compilation of Maven projects is supported only if external build is started from an
- 社区团购小程序有哪些赚钱方式
- 魔兽世界服务器同时在线人数,厉害了!《魔兽世界》怀旧服同时在线玩家已超过百万...
- 如何定制一款个性化的 WinPE
- 【Java高级】多线程基础
热门文章
- 搜狗手机输入法java_手机搜狗输入法制作个性皮肤的方法
- java参数化查询_【转】参数化查询为什么能够防止SQL注入
- gpu云服务器运行游戏_99元起!华为云鲲鹏云手机正式发布:流畅运行大型游戏...
- 【IDEA】jsp页面中的代码一不小心变成黄色,代码被识别成sql脚本解决办法
- 五大列级庄_走进法国波尔多五大一级酒庄
- 主梁弹性模量计算_桥梁支座详解全攻略!图文+计算详解,值得收藏!
- 微型计算机主机作用,微型计算机的主机包括()。
- Tensor is not an element of this graph 解决方法
- 电脑已安装软件提取安装包_SPSS 24,软件安装包及安装教程
- 最短路应用 —— 解决某些计数、数论问题