【原创】Erlang 之 debugger 调试简介

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

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

 以一个之前学习 mochiweb 使用的 demo 为例。源码位置如下  
 

启动 erl,切换工作路径。  
 

启动 debugger 调试器,此时会弹出 Monitor 窗口。  
 

选择需要调试的 .erl 文件(Module->Interpret),在需要调试的代码位置双击设置断点。  
 

 

按照 .app 文件中的依赖关系启动相应的应用。  
 

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

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

 
采用类似的方法就可以调试 erlang 的代码了。  


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


目录
相关文章
|
网络协议 IDE PHP
Swoole如何使用Xdebug进行初步调试
在 PHP-FPM 中使用 Xdebug 的人应该不少,而在 Swoole 中使用 Xdebug 的人还是很少的,原因是 Swoole 扩展明确说明了和 Xdebug 扩展冲突 不过好在提供了一个 Sdebug 进行了兼容,让 Xdebug 可用于 Swoole 环境进行断点、调试
671 0
Swoole如何使用Xdebug进行初步调试
|
3月前
|
机器学习/深度学习 NoSQL Linux
【Linux系统编程】代码调试工具gdb--1
【Linux系统编程】代码调试工具gdb--1
|
3月前
|
机器学习/深度学习 存储 NoSQL
【Linux系统编程】代码调试工具gdb--2
【Linux系统编程】代码调试工具gdb--2
|
6月前
|
API Windows
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
|
6月前
|
Go iOS开发 MacOS
Go学习笔记-代码调试工具 dlv
Go学习笔记-代码调试工具 dlv
183 1
Go学习笔记-代码调试工具 dlv
|
10月前
|
安全 Java 编译器
如何用 Go 调用 Windows API | 青训营笔记
如何用 Go 调用 Windows API | 青训营笔记
805 0
|
API 索引 Python
Python3常用其他API速查手册(持续更新ing...)
Python3常用其他API速查手册(持续更新ing...)
Python3常用其他API速查手册(持续更新ing...)
|
编译器 Go
Go 语言快速入门指南:第七篇 方法
虽然从技术上讲 Go 不是面向对象的编程语言,但类型和方法允许采用面向对象的编程风格。最大的不同是 Go 不支持类型继承,而是有接口的概念。在本文中,我们将重点介绍 Go 对方法和接口的使用。
Go 语言快速入门指南:第七篇 方法
|
PHP
ThinkPHP源码阅读最佳工具debug_backtrace(1)
ThinkPHP源码阅读最佳工具debug_backtrace
138 0
ThinkPHP源码阅读最佳工具debug_backtrace(1)
|
Linux Go 开发工具
Go 专栏 | 开发环境搭建以及开发工具 VS Code 配置
Go 专栏的第一篇,想学 Go 的同学们,走起~
117 0
Go 专栏 | 开发环境搭建以及开发工具 VS Code 配置