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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章