Elixir中的调试和调试工具?

Mar*_*var 64 elixir

我刚开始使用Elixir,并开始了一个凤凰项目,我非常喜欢.现在有了rails后台,我习惯于被调试工具所破坏,比如"debugger","byebug"等等; 我想知道Elixir是否有类似的工具?你们是如何调试Elixir应用程序的?

甚至相当于Rubys raise my_object.inspect,也会有奇迹!

谢谢

Paw*_*rok 73

您可以使用 IEx

require IEx

value = {:some, :erlang, :value}
IEx.pry
Run Code Online (Sandbox Code Playgroud)

如果您启动此程序(例如iex -s program.exs,iex -S mix对于某个项目),系统会询问您是否允许在到达此代码时对其value进行检查,并且可供您检查.

您也可以使用IO.inspect允许您输出基本上任何erlang数据结构来进行打印调试.

  • 值得一提的是IO.inspect返回给定的参数.所以,如果你有一个像`foo(bar,baz)`的代码,你可以直接添加`foo(IO.inspect(bar),baz)`并且一切都会表现得一样. (39认同)
  • 对于你想要使用`iex.bat --werl -S mix phoenix.server`的windows (4认同)
  • 我希望 [IEx.pry/1](http://elixir-lang.org/docs/stable/iex/IEx.html#pry/1) 文档的链接会有用 (2认同)

Mar*_*var 32

调试牛仔应用程序和Phoenix应用程序.

我在Elixir rader http://www.jessetrimble.net/iex-pry-elixir中看到了这篇文章,我想我会在这里总结一下,因为它非常方便:-).

在Rails应用程序(和其他)中,您可以简单地在控制器中放入调试器标签,并且当路径被触发时,它将在调试器标签处中断.

在凤凰城使用撬时,上面会导致

Cannot pry #PID<0.259.0> at web/controllers/posts_controller.ex:8. Is an IEx shell running?
Run Code Online (Sandbox Code Playgroud)

事实证明,Phoenix进程必须在IEx会话中运行,这样做

iex -S mix phoenix.server
Run Code Online (Sandbox Code Playgroud)

相反,你会看到

Request to pry #PID<0.266.0> at web/controllers/posts_controller.ex:9. Allow? [Yn]
Run Code Online (Sandbox Code Playgroud)

  • 我是Elixir和Phoenix的新手,所以这可能是一个转储问题.理解用pry我可以检查变量和(进入iex)我可以进行函数调用.但这只是调试器功能的一半:我如何遵循程序的执行流程?还有另一种工具可以让我前进到下一行并进入功能吗?Ruby的byebug具有两种功能. (6认同)

Jul*_*hon 10

您可以使用 https://github.com/qhool/quaff中的Quaff.Debug模块

Debug模块提供了一个简单的辅助接口,用于在erlang图形化调试器中运行Elixir代码

我今天用Elixir 1.0.4测试了它,它的工作原理.