查看源码 观察器
简介
Observer 是一个图形化工具,用于观察 Erlang 系统的特性。Observer 显示系统信息、应用程序监管树、进程信息、ETS 表、Mnesia 表,并包含 Erlang 跟踪的前端。
入门
从一个独立的节点运行 Observer,以最大限度地减少对被观察系统的影响。
示例
% erl -sname observer -hidden -setcookie MyCookie -run observer
使用菜单 Nodes 选择要观察的节点。菜单 View > Refresh interval 控制视图的更新频率。刷新间隔是每个查看器单独设置的,因此您可以为每个查看器设置不同的设置。为了最大限度地减少系统影响,只有活动的查看器才会更新。其他视图在激活时更新。
鼠标按钮的行为符合预期。使用左键单击选择对象,右键单击获取包含最常用选项的菜单,双击显示有关所选对象的信息。在大多数具有多列的查看器中,您可以通过左键单击列标题来更改排序顺序。
系统选项卡
System 选项卡显示有关活动 Erlang 节点及其运行时系统的常规信息,例如构建配置、系统功能和总体使用统计信息。
负载图表选项卡
Load Charts 选项卡显示活动 Erlang 节点上当前资源使用情况的图表。
图表 Scheduler Utilization
显示每个调度器的调度器使用情况,每个调度器使用情况都有唯一的颜色。
图表 Memory Usage
显示总内存使用量和每个内存类别的使用量,每个类别都有唯一的颜色。类别如下:
Total
- 所有内存类别的总和。Processes
- 所有进程使用的内存总和。Atom
- 原子表使用的大小。Binary
- 所有堆外分配的二进制文件的总和。Code
- 分配给代码存储的内存。Ets
- 所有 ETS 表使用的内存。
图表 IO Usage
显示系统当前的 I/O 负载。
内存分配器选项卡
Memory Allocators 选项卡显示有关载体大小和当前内存载体的详细信息。有关内存载体的详细信息,请参阅应用程序 ERTS 中的模块 erts_alloc
。
Max Carrier size
列显示自上次节点更改或应用程序启动以来观察者看到的最大值,即切换节点将重置最大列。值是采样的,因此可能存在比显示的值更高的值。
应用程序选项卡
Applications 选项卡显示应用程序信息。在左侧列表中选择一个应用程序以显示其监管树。树中的右键单击选项如下:
进程信息 - 打开所选进程的详细信息窗口,包括以下内容:
进程信息 - 显示进程信息。
消息 - 显示进程消息。
字典 - 显示进程字典。
堆栈跟踪 - 显示进程的当前堆栈跟踪。
状态 - 显示进程状态。
日志 - 如果已启用并且可用,则显示进程 SASL 日志条目。
跟踪进程 - 将所选进程标识符添加到 Trace Overview 选项卡以及该进程所在的节点。
跟踪命名进程 - 添加进程的注册名称。当在多个节点上进行跟踪时,这非常有用,因为具有该名称的进程将在所有被跟踪的节点上进行跟踪。
跟踪进程树 - 将所选进程及其右侧的所有进程添加到 Trace Overview 选项卡。
跟踪命名进程树 - 将所选进程及其右侧的所有进程添加到 Trace Overview 选项卡。
进程选项卡
Processes 选项卡以列的形式列出进程信息。对于每个进程,会显示以下信息:
Pid - 进程标识符。
描述 - 注册名称、进程标签 或初始函数。
Reds - 在进程上执行的规约次数。这可以表示为累积值或自上次更新以来的值。
内存 - 进程的大小(以字节为单位),通过调用
process_info(Pid,memory)
获得。MsgQ - 进程的消息队列的长度。
选项 Process info 打开鼠标指针下的进程的详细信息窗口,包括以下内容:
进程信息 - 显示进程信息。
消息 - 显示进程消息。
字典 - 显示进程字典。
堆栈跟踪 - 显示进程的当前堆栈跟踪。
状态 - 显示进程状态。
日志 - 如果已启用并且可用,则显示进程 SASL 日志条目。
注意
Log 需要在被观察的节点上启动应用程序 SASL,并将
log_mf_h
作为日志处理程序。被观察的节点必须是 Erlang/OTP R16B02 或更高版本。单击菜单 Log > Toggle log view 时,不得在被观察的节点上启动rb
服务器。退出或更改被观察的节点时,将停止被观察节点上的rb
服务器。
选项 Trace selected processes 将所选进程标识符添加到 Trace Overview 选项卡以及这些进程所在的节点。
选项 Trace selected processes by name 添加进程的注册名称。当在多个节点上进行跟踪时,这非常有用,因为具有该名称的进程将在所有被跟踪的节点上进行跟踪。
选项 Kill process 通过发送一个带有原因 kill
的退出信号来残酷地杀死鼠标指针下的进程。
端口选项卡
Ports 选项卡以列的形式列出端口信息。对于每个端口,会显示以下信息:
Id - 端口标识符。
Connected - 拥有该端口的进程的进程标识符。
Name - 端口的注册名称(如果有)。
Controls - 由
erlang:open_port/2
设置的命令集名称。Slot - 端口的内部索引。
选项 Port info 打开鼠标指针下的端口的详细信息窗口。除了上述信息之外,它还显示链接和监视器。
选项 Trace selected ports 将所选端口标识符以及这些端口所在的节点添加到 Trace Overview 选项卡。
选项 Trace selected ports by name 将端口的注册名称添加到 Trace Overview 选项卡。当在多个节点上进行跟踪时,这非常有用,因为具有该名称的端口将在所有被跟踪的节点上进行跟踪。
选项 Close 对鼠标指针下的端口执行 erlang:port_close/1
。
套接字选项卡
Sockets 选项卡分为两个部分。第一部分包含一般的 socket
信息,第二部分以列的形式列出套接字信息。
对于每个套接字,会显示以下信息:
Id - 套接字标识符。
Owner - 拥有该套接字的进程的进程标识符。
Fd - 套接字的底层文件描述符。
Domain - 此套接字的通信域(例如,inet 或 inet6)。
Type - 此套接字的类型(例如,stream 或 dgram)。
Protocol - 此套接字的协议(例如,tcp 或 udp)。
Read State - 套接字的读取状态。
Write State - 套接字的写入状态。
选项 Socket info 打开鼠标指针下的套接字的详细信息窗口。除了上述信息之外,它还显示监视器。
选项 Close 对鼠标指针下的套接字执行 socket:close/1
。
表格查看器选项卡
Table Viewer 选项卡列出表格。默认情况下,显示 ETS 表,而不显示不可读的私有 ETS 表和 OTP 应用程序创建的表。使用菜单 View 查看“系统”ETS 表、不可读的 ETS 表或 Mnesia 表。
双击查看表格内容,或右键单击并选择选项 Show Table Content。要查看表格信息,请选择表格并激活菜单 View > Table information,或右键单击并选择选项 Table info。
您可以使用 正则表达式 并搜索对象,以及编辑或删除它们。
跟踪概览选项卡
Trace Overview 选项卡处理跟踪。通过选择要跟踪的进程或端口以及如何跟踪它们来进行跟踪。对于进程,您可以跟踪消息、函数调用、调度、垃圾回收以及进程相关的事件,例如 spawn
、exit
以及许多其他事件。对于端口,您可以跟踪消息、调度和端口相关的事件。
要跟踪函数调用,还需要设置跟踪模式。跟踪模式选择要跟踪的函数调用。可以使用匹配规范进一步减少跟踪的函数调用的数量。匹配规范也可以用于在跟踪消息中触发更多信息。
您还可以在消息上设置匹配规范。默认情况下,如果跟踪消息,则会跟踪进程或端口发送和/或接收的所有消息。可以使用匹配规范来减少跟踪的消息数量和/或在跟踪消息中触发更多信息。
注意
跟踪模式仅适用于被跟踪的进程和端口。
进程是从 Applications 或 Processes 选项卡添加的。端口是从 Ports 选项卡添加的。一个特殊的 new 标识符,表示在跟踪开始后启动的所有进程或端口,可以使用按钮 Add 'new' Processes 和 Add 'new' Ports 分别添加。
添加进程或端口时,会显示一个包含跟踪选项的窗口。为所选进程/端口设置所选选项。要更改选项,请右键单击进程或端口并选择 Edit process options。要从列表中删除进程或端口,请右键单击并分别选择 Remove process 或 Remove port。
通过进程/端口标识符添加的进程和端口会将这些进程/端口所在的节点添加到节点列表中。可以通过单击按钮 Add Nodes 或在 Nodes 列表中右键单击并选择 Add Nodes 来添加更多节点。要删除节点,请选择它们,然后右键单击并选择 Remove nodes。
如果跟踪函数调用,必须通过单击添加跟踪模式按钮来添加跟踪模式。选择一个模块、一个或多个函数以及一个匹配规范。如果没有选择任何函数,则会跟踪该模块中的所有函数。
也可以为跟踪的消息添加跟踪模式。单击添加跟踪模式按钮,然后选择发送的消息或接收的消息,以及一个匹配规范。
该工具中提供了一些基本的匹配规范,您也可以提供自己的匹配规范。匹配规范的语法在ERTS 用户指南
中描述。为了简化匹配规范的编写,它们也可以写成fun/1
的形式。有关详细信息,请参阅 STDLIB 应用程序中的ms_transform
模块。
单击开始跟踪按钮以启动跟踪。默认情况下,跟踪输出会写入一个新窗口。当窗口关闭或单击停止跟踪按钮时,跟踪将停止。可以使用菜单选项 > 输出更改跟踪输出。跟踪设置(包括匹配规范)可以保存到文件或从文件加载。
有关跟踪的详细信息,请参阅 Runtime_Tools 应用程序中的 dbg
模块,以及 ERTS 用户指南
中“Erlang 中的匹配规范”部分,以及 STDLIB 应用程序中的 ms_transform
模块。