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 silent
ok
end,
{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>

erlang调试方法的更多相关文章

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

    最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...

  2. linux Ubuntu(Segmentation fault)段错误出现原因及调试方法

      在linux下编译了一个程序,尝试运行的时候出现: Segmentation fault (core dumped) 初步确认为...完全不知道是什么玩意. 于是找度娘了. ----------- ...

  3. kernel启动console_init之前console不可用时发生crash的调试方法

    http://code.google.com/p/innosoc/wiki/KernelBootCrashDebug 注: 如在i386_start_kernel中加入:early_printk(&q ...

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

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

  5. 【matlab】MATLAB程序调试方法和过程

    3.8  MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...

  6. 二十四、【开源】EFW框架Winform前端开发之项目结构说明和调试方法

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...

  7. Linux的段错误调试方法

    linux段错误的调试方法 相关博文: http://blog.csdn.net/htianlong/article/details/7439030 http://www.cnblogs.com/pa ...

  8. Linux - Shell脚本调试方法

    Shell脚本调试选项 Shell本身提供一些调试方法选项: -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误. -v,一边执行脚本,一边将执行过的脚本命令打印到标准输出. -x,提供跟踪执 ...

  9. intellij 调试方法

    intellij 调试方法 转自 http://www.th7.cn/Program/net/201410/296492.shtml

随机推荐

  1. Xcode工程编译错误之iOS开发之Xcode9报错 Compiling IB documents for earlier than iOS7 is no longer supported.

    概要: 在我们升级到Xcode9时,最低的编译版本为iOS8,但是在使用一些SDK的时候就会报出Compiling IB documents for earlier than iOS7 is no l ...

  2. DELPHI中完成端口(IOCP)的简单分析(2)

    DELPHI中完成端口(IOCP)的简单分析(2)   今天我写一下关于DELPHI编写完成端口(IOCP)的工作者线程中的东西.希望各位能提出批评意见.上次我写了关于常见IOCP的代码,对于IOCP ...

  3. Filter and servlet

    filter与servlet的区别与联系呢? 1. Filter    实现javax.servlet.Filter接口,在web.xml中配置与标签指定使用哪个Filter实现类过滤哪些URL链接. ...

  4. Cookie:解决HTTP协议无保存状态

    客户端 Cookie会根据从服务器端发送的相应报文内一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie.当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值 ...

  5. jenkins使用笔记

    jenkins动态在构建的时候给脚本传递参数 1.任务  >General > 参数化构建过程 >选项参数 2.把变量传递给shell脚本 3.构建的时候给参数赋值 4.shell脚 ...

  6. python框架之Flask(4)-上下文管理

    知识储备 偏函数 作用 偏函数,帮助开发者自动传递参数. 使用 import functools def index(a1, a2): return a1 + a2 # 原来的调用方式 # ret = ...

  7. linux环境如何配置repo

    (1)下载repo mkdir ~/bin       curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo  ...

  8. 第十二届GOPS全球运维大会2019深圳站即将开幕

    第十二届 GOPS 全球运维大会深圳站 会议召开时间:2019年4月12日-13日 会议召开地点:深圳圣淘沙酒店(翡翠店) 会议主办单位:高效运维社区 票务合作伙伴:活动家 会议报名地址:https: ...

  9. C#ImageList和ListView的使用

    一.ImageList  ImageList组件,又称为图片存储组件,它主要用于存储图片资源,然后在控件上显示出来,这样就简化了对图片的管理.ImageList组件的主要属性是Images,它包含关联 ...

  10. ueditor富文本上传图片的时候报错"未找上传数据"

    最近因为需求所以在ssh项目中使用了Ueditor富文本插件,但是在上传图片的时候总是提示“未找到上传数据”,之后百度了好久终于弄明白了.因为Ueditor在上传图片的时候会访问controller. ...