1. 第一种方式,加打印记录
%%-define(debug, ok).-ifdef(debug).
-define(LOG(X), io:format("pid:~p , {~p,~p}: ~p~n", [self(), ?MODULE, ?LINE, X])).
-else.
-define(LOG(X), true).
-endif.

设置LOG的宏定义,调试只要在代码中加入?LOG(Val),就可以

特点是,简单,调试清楚,对代码性能的影响小,也是最常用的方法,就不举例说明了

第二种方法,加trace 日志

%trace Mod 所有方法的调用
trace(Mod) ->dbg:tracer(),dbg:p(all, [call]),dbg:tp(Mod,  [{'_', [], [{return_trace}]}]);%trace Mod 的Fun方法的调用
trace(Mod, Fun) ->dbg:tracer(),dbg:p(all, [call]),dbg:tp(Mod, Fun, [{'_', [], [{return_trace}]}]);%停止trace
trace_stop() ->dbg:stop_clear().

特点:对整个模块,或者某些函数进行详细的调试,调试信息比较多,对性能有一段影响。

举例

......
......
init([Opt]) ->Tab = ets:new(xx, [set]),case opt_find(debug, Opt, false) of              %%如果设置了debug,开启debug跟踪true ->dbg:tracer(),dbg:p(all, [call]),dbg:tp(tt5, [{'_', [], [{return_trace}]}]);_ ->%% Keep silentokend,{ok, #state{tab = Tab}}......
.....
.....

1> c(tt5).
{ok,tt5}
2> tt5:start([{debug, true}]).
{ok,<0.39.0>}
3> tt5:add(name, "wowchina").
(<0.32.0>) call tt5:add(name,"wowchina")
(<0.39.0>) call tt5:handle_call({add,name,"wowchina"},{<0.32.0>,#Ref<0.0.0.104>},{state,16400})
(<0.39.0>) returned from tt5:handle_call/3 -> {reply,true,{state,16400}}
(<0.32.0>) returned from tt5:add/2 -> true
true
4> tt5:find(name).
(<0.32.0>) call tt5:find(name)
(<0.39.0>) call tt5:handle_call({find,name},{<0.32.0>,#Ref<0.0.0.113>},{state,16400})
(<0.39.0>) returned from tt5:handle_call/3 -> {reply,[{name,"wowchina"}],{state,16400}}
(<0.32.0>) returned from tt5:find/1 -> [{name,"wowchina"}]
[{name,"wowchina"}]
5>

转载于:https://www.cnblogs.com/tudou008/p/5210109.html

erlang调试方法相关推荐

  1. Linux环境下段错误的产生原因及调试方法小结

    From:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基 ...

  2. Web开发常规调试方法与常见问题分析

    一.Web项目基本原理 现在的web项目大都已经前后端独立开发与部署. 前后端独立开发,一般是前端与后端通过web接口(常见的有RESTful与websocket)文档进行交流.前端开发人员先更具业务 ...

  3. smc数显压力表设定方法_SMC压力表使用注意与调试方法

    SMC压力表使用注意与调试方法 SMC压力表使用注意: 1.仪表必须垂直:安装时应使用17mm扳手旋紧,不应强扭表壳:运输时应避免碰撞: 2.仪表使用宜在周围环境温度为-25~55℃: 3.使用工作环 ...

  4. 几种Linux段错误调试方法

    一.产生段错误的原因 段错误就是指某一进程访问了不属于它权限范围的内存空间,比如:访问了不存在的内存,访问了受系统保护的内存,访问了只读的内存等.下面是一段会产生段错误的实例代码:main.c #in ...

  5. (五)stm32工程代码HardFault异常查错调试方法

    (五)stm32工程代码HardFault异常查错调试方法 参考文章: (1)(五)stm32工程代码HardFault异常查错调试方法 (2)https://www.cnblogs.com/zhan ...

  6. [Linux]core文件调试方法

    来源: shaovey的专栏 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行 ...

  7. 转Linux环境下段错误的产生原因及调试方法小结

    Linux环境下段错误的产生原因及调试方法小结 转载于:https://www.cnblogs.com/objectDetect/p/7575659.html

  8. 7 php程序的调试方法_php程序调试方法总结

    相信很多朋友们都有调试程序的经历,然而很多时候调试程序是痛苦而又漫长的过程:它不仅需要细心,更需要耐心,切忌心浮气躁.但是当找出问题并顺利 解决它时,又会给人无比激动的喜悦.这里总结一下笔者在程序调试 ...

  9. python pdb_python pdb调试方法分享

    复制代码 代码如下: import pdb def pdb_test(arg): for i in range(arg): print(i) return arg pdb.run("pdb_ ...

最新文章

  1. SAP WM LP10 创建TO单据的时候,系统根据目的地Storage Type 100下的库存自动扣减TO里的数量
  2. [Android]你不知道的Android进程化(4)--进程通信AIDL框架
  3. visual basic.net 2019-判断null,is null
  4. clickhouse一键登陆
  5. 祝福!微软 46 周年生日快乐!
  6. [蓝桥杯2015决赛]穿越雷区-bfs
  7. Ubuntu下的提示信息彩色显示
  8. 好用的下拉第三方——nicespinner
  9. 初三中考比一模能提高多少分?
  10. Android之常见问题集锦Ⅰ
  11. 习题 3.10 有一函数:写一程序,输入x,输出y值。
  12. 微信群网址活码在线生成系统源码 二维码活码生成
  13. 实现isodd() 参数为整数,如果整数为基数,返回True 否则返回False
  14. 人工智能到底是什么?AI基础概念深度解析
  15. Qt调试器出现:the selected debugger may be inappropriate for the inferior的解决方案
  16. 【java_设计模式】建造者模式
  17. mqtt - github上的TT3工程编译
  18. 移动应用中的第三方SDK隐私合规检测
  19. 【智能推荐】阿里云智能推荐AIRec文档说明与SDK测试
  20. Joint fully convolutional and graph convolutional networks for weakly-supervised segmentation of

热门文章

  1. 【React+TS】从零开始搭建react+typescript+router+redux+less+pxToVw自适应+sass+axios反向代理+别名@+Antd-mobile
  2. 关于英语学习过程的量化和英语PKM的设想
  3. Win10系统D盘满了怎么清理隐藏的垃圾文件?
  4. 5.UI线程和非UI线程的交互方式
  5. 工业机器人上下料数控车床实训平台
  6. android recyclerview流式布局,Android FlexboxLayout流式布局
  7. 源火星球——青龙羊毛
  8. android 行车模式,Android手机充当行车记录器(DailyRoads)
  9. 中国文艺复兴_2040年即将到来的文艺复兴
  10. 《从零到一》彼得蒂尔 读书笔记(更新ing)