相关疑难解决方法(0)

在Erlang中使用trace和dbg

我试图开始使用erlang:trace/3和dbg模块来跟踪实时生产系统的行为,而无需关闭服务器.

文件不透明的(说得客气一点),而且不会出现任何有用的在线教程.

我花了一整天努力做的是通过尝试将跟踪应用于模块来捕获特定函数中发生的事情:使用dbg:c和dbg:p的函数但是根本没有成功...

有没有人对如何在实时Erlang系统中使用跟踪有简洁的解释?

debugging erlang trace

66
推荐指数
4
解决办法
2万
查看次数

如何调试Erlang代码?

我有一些Ruby和Java背景,我习惯于在错误日志中有确切的行数.

因此,如果编译代码中存在错误,我将在控制台输出中看到导致异常的行数.

就像在这个Ruby示例中一样:

my_ruby_code.rb:13:in `/': divided by 0 (ZeroDivisionError)
    from my_ruby_code.rb:13
Run Code Online (Sandbox Code Playgroud)

它简单而快速 - 我只需转到第13行并修复错误.

相反,Erlang只是说:

** exception error: no match of right hand side value [xxxx]
 in function my_module:my_fun/1
 in call from my_module:other_fun/2
Run Code Online (Sandbox Code Playgroud)

没有行号可供查看.

如果我有两行像

X = Param1,
Y = Param2,
Run Code Online (Sandbox Code Playgroud)

在'my_fun'中,怎么能理解问题出在哪一行?

另外,我试图从Vim切换到Emacs + Elang模式,但到目前为止我唯一的奖励就是能够在Emacs(Ck`)中循环编译错误.

因此,编写代码和寻找简单的逻辑错误(如"右手边不匹配")的过程似乎有点麻烦.

我试图在代码中添加许多"io:format"行,但这是需要时间的额外工作.

我也尝试过使用distel,但只需要10步就可以打开调试器一次.

问题:

  1. 调试Erlang代码的最简单直接的方法是什么?
  2. 与Vim相比,Emacs的erlang模式在Erlang开发方面有哪些优势?
  3. 您更喜欢哪种开发'write-compile-debug'循环?你是否让Emacs编译并运行终端中的代码?如何在Erlang代码中搜索错误?

debugging vim emacs erlang

29
推荐指数
3
解决办法
1万
查看次数

标签 统计

debugging ×2

erlang ×2

emacs ×1

trace ×1

vim ×1