erlang调试方法
- 第一种方式,加打印记录
%%-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调试方法相关推荐
- Linux环境下段错误的产生原因及调试方法小结
From:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基 ...
- Web开发常规调试方法与常见问题分析
一.Web项目基本原理 现在的web项目大都已经前后端独立开发与部署. 前后端独立开发,一般是前端与后端通过web接口(常见的有RESTful与websocket)文档进行交流.前端开发人员先更具业务 ...
- smc数显压力表设定方法_SMC压力表使用注意与调试方法
SMC压力表使用注意与调试方法 SMC压力表使用注意: 1.仪表必须垂直:安装时应使用17mm扳手旋紧,不应强扭表壳:运输时应避免碰撞: 2.仪表使用宜在周围环境温度为-25~55℃: 3.使用工作环 ...
- 几种Linux段错误调试方法
一.产生段错误的原因 段错误就是指某一进程访问了不属于它权限范围的内存空间,比如:访问了不存在的内存,访问了受系统保护的内存,访问了只读的内存等.下面是一段会产生段错误的实例代码:main.c #in ...
- (五)stm32工程代码HardFault异常查错调试方法
(五)stm32工程代码HardFault异常查错调试方法 参考文章: (1)(五)stm32工程代码HardFault异常查错调试方法 (2)https://www.cnblogs.com/zhan ...
- [Linux]core文件调试方法
来源: shaovey的专栏 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行 ...
- 转Linux环境下段错误的产生原因及调试方法小结
Linux环境下段错误的产生原因及调试方法小结 转载于:https://www.cnblogs.com/objectDetect/p/7575659.html
- 7 php程序的调试方法_php程序调试方法总结
相信很多朋友们都有调试程序的经历,然而很多时候调试程序是痛苦而又漫长的过程:它不仅需要细心,更需要耐心,切忌心浮气躁.但是当找出问题并顺利 解决它时,又会给人无比激动的喜悦.这里总结一下笔者在程序调试 ...
- python pdb_python pdb调试方法分享
复制代码 代码如下: import pdb def pdb_test(arg): for i in range(arg): print(i) return arg pdb.run("pdb_ ...
最新文章
- SAP WM LP10 创建TO单据的时候,系统根据目的地Storage Type 100下的库存自动扣减TO里的数量
- [Android]你不知道的Android进程化(4)--进程通信AIDL框架
- visual basic.net 2019-判断null,is null
- clickhouse一键登陆
- 祝福!微软 46 周年生日快乐!
- [蓝桥杯2015决赛]穿越雷区-bfs
- Ubuntu下的提示信息彩色显示
- 好用的下拉第三方——nicespinner
- 初三中考比一模能提高多少分?
- Android之常见问题集锦Ⅰ
- 习题 3.10 有一函数:写一程序,输入x,输出y值。
- 微信群网址活码在线生成系统源码 二维码活码生成
- 实现isodd() 参数为整数,如果整数为基数,返回True 否则返回False
- 人工智能到底是什么?AI基础概念深度解析
- Qt调试器出现:the selected debugger may be inappropriate for the inferior的解决方案
- 【java_设计模式】建造者模式
- mqtt - github上的TT3工程编译
- 移动应用中的第三方SDK隐私合规检测
- 【智能推荐】阿里云智能推荐AIRec文档说明与SDK测试
- Joint fully convolutional and graph convolutional networks for weakly-supervised segmentation of
热门文章
- 【React+TS】从零开始搭建react+typescript+router+redux+less+pxToVw自适应+sass+axios反向代理+别名@+Antd-mobile
- 关于英语学习过程的量化和英语PKM的设想
- Win10系统D盘满了怎么清理隐藏的垃圾文件?
- 5.UI线程和非UI线程的交互方式
- 工业机器人上下料数控车床实训平台
- android recyclerview流式布局,Android FlexboxLayout流式布局
- 源火星球——青龙羊毛
- android 行车模式,Android手机充当行车记录器(DailyRoads)
- 中国文艺复兴_2040年即将到来的文艺复兴
- 《从零到一》彼得蒂尔 读书笔记(更新ing)