E4.IO.pry/0-IO.break!/1动态打点调试

IO.pry/0

IO.inspect只能在静态地打印指定的变量,Elixir的shell还可以使用IO.pry/0IO.break!/1实现更灵活的调试方法。

假如你想查看一下函数的某个位置到底发生了什么,你可以直接在该位置使用IO.pry/0宏。它可以让你直接查看绑定的变量及状态。

E4_1

可以直观地看到pry启动了一个新的shell继承了前一个shell中的变量及状态,当你在pry shell中灵活的观察各种状态,比IO.inspect只能静态打印某个值更加方便。不过当进入pry shell后,原进程就堵塞住,你必须使用IEx.Helpers.respawn/0返回到原shell中继续执行。

IO.break!/1

虽然IO.pry/0很灵活,但这还是需要在原来的代码上加上调试的代码。还有一个更强大的!IO.break!/1可以让人在任何代码上设置和管理断点,而且无需修改源代码。

E4_2

必须要有源代码,才能做到break进入源码。所以我们把Example保存为ex文件再试试:

E4_3
posted @ 2021-01-29 15:01  写着写着就懂了  阅读(235)  评论(0编辑  收藏  举报