【原创】Erlang 之 debugger 调试简介

时间:2024-04-03 10:45:41
Erlang 提供了一种图形化的源码级别调试器 -- debugger。在一些情况下,可以用于对代码进行单步跟踪调试。下面举例说明如何使用这个工具。 

首先需要明确的是,若想要在调试器中启用某个模块,必须先让调试器 解释 该模块。调试器同时需要 .erl 源文件(用于显示源码)和 .beam 字节码文件(需要带有调试信息)。 
编译带调试信息的 .beam 文件,要求在编译 .erl 文件时使用 +debug_info 标志。例如 
1
erlc +debug_info -o ebin src/*.erl

 以一个之前学习 mochiweb 使用的 demo 为例。源码位置如下 
【原创】Erlang 之 debugger 调试简介 

启动 erl,切换工作路径。 
【原创】Erlang 之 debugger 调试简介 

启动 debugger 调试器,此时会弹出 Monitor 窗口。 
【原创】Erlang 之 debugger 调试简介 

选择需要调试的 .erl 文件(Module->Interpret),在需要调试的代码位置双击设置断点。 
【原创】Erlang 之 debugger 调试简介 

【原创】Erlang 之 debugger 调试简介 

按照 .app 文件中的依赖关系启动相应的应用。 
【原创】Erlang 之 debugger 调试简介 

成功启动后,会停在你之前设置的断点处(如果设置的断点位于应用启动时的执行路径上)。此时,可以通过 Step、Next、Continue 和 Finish 按钮进行调试。 
【原创】Erlang 之 debugger 调试简介 

      若想跟踪进入其他 module 的代码,则需要和上面一样,通过 Module->Interpret 添加相应的 .erl 文件。例如,在添加 mochiweb_example_sup.erl 文件后,点击 Continue 则可以执行到下一个断点处(需要事先在该模块中设置好断点)。【原创】Erlang 之 debugger 调试简介 

【原创】Erlang 之 debugger 调试简介 
采用类似的方法就可以调试 erlang 的代码了。 


注:在按需启动依赖的相应应用时,若提示 already_started 则可以按如下方式停止 
1
application:stop(mochiweb_example).