查看Erlang运行期内部状态的方法(基于R13B04)
来源:互联网 发布:vb现在还有人用吗 编辑:程序博客网 时间:2024/05/16 11:37
erts_debug:get_internal_state是用来获取Erlang运行期内部信息的主要手段. 但是这个功能是用来给开发人员或者说需要了解系统内部细节的场合, 比如说系统调优.
在R13B04可以使用的选项有:
1. reds_left
2. node_and_dist_references
3. monitoring_nodes
4. next_pid
5. next_port
6. ‘DbTable_words’
7. check_io_debug
8. process_info_args
9. processes
10. processes_bif_info
11. max_atom_out_cache_index
12. nbalance
13. available_internal_state
14. force_heap_frags
15. {process_status, Pid}
16. {link_list, Pid} 或者 {link_list, Port} 或者 {link_list, Nodename}
17. {monitor_list, Pid} 或者 {monitor_list, Nodename}
18. {channel_number, Sysname}
19. {have_pending_exit, Pid}
20. {binary_info, Binary}
21. {dist_port, Sysname}
22. {atom_out_cache_index, Atom}
23. {fake_scheduler_bindings, How} How=spread | processor_spread | thread_spread | default_bind | no_node_processor_spread | no_node_thread_spread | no_spread | unbound
使用此功能的前提是先用erts_debug:set_internal_state(available_internal_state, true). 否者调用get_internal_state会提示失败.
我们演示下:
root@ubuntu:~/otp/
test
# erl -sname x
Erlang R14A (erts-5.8) [
source
] [smp:2:2] [rq:2] [async-threads:0] [kernel-poll:
false
]
Eshell V5.8 (abort with ^G)
(x@ubuntu)1> erts_debug:get_internal_state(check_io_debug).
** exception error: undefined
function
erts_debug:get_internal_state/1
(x@ubuntu)2> erts_debug:set_internal_state(available_internal_state,
true
).
false
=ERROR REPORT==== 7-Apr-2010::14:40:41 ===
Process <0.38.0> on node
'x@ubuntu'
enabled access to the emulator internal state.
NOTE: This is an erts internal
test
feature and should *only* be used by OTP
test
-suites.
(x@ubuntu)3> erts_debug:get_internal_state(check_io_debug).
--- fds
in
pollset --------------------------------------
fd=0
type
=chr driver_select ev=IN inport=
#Port<0.294> inname=tty_sl -c -e indrv=tty_sl
fd=3
type
=fifo internal ep_ev=IN
fd=4
type
=fifo internal
fd=7
type
=sock driver_select ev=IN inport=
#Port<0.62> inname=tcp_inet indrv=tcp_inet
fd=8
type
=sock driver_select ev=IN inport=
#Port<0.65> inname=tcp_inet indrv=tcp_inet
fd=9
type
=fifo driver_select ev=IN inport=
#Port<0.486> inname=inet_gethost 4 indrv=spawn
fd=10
type
=sock driver_select ev=IN inport=
#Port<0.492> inname=tcp_inet indrv=tcp_inet
fd=11
type
=sock driver_select ev=IN inport=
#Port<0.495> inname=tcp_inet indrv=tcp_inet
used fds=6
internal fds=2
---------------------------------------------------------
0
(x@ubuntu)4> erts_debug:get_internal_state({process_status, self()}).
running
- 查看Erlang运行期内部状态的方法(基于R13B04)
- Erlang如何查看gen_server内部的状态
- 查看线程的运行状态
- Erlang模块与Erlang程序的运行方法
- Erlang如何查看gen_server系列的状态 (高级)
- Erlang应用系统内部状态监控
- Erlang/OTP-R13B04(ubuntu 10.10)源码构建与安装笔记
- [Erlang 0032] Erlang Binary的内部实现
- 查看 SQL 中JOB 的运行状态
- 查看 SQL 中JOB 的运行状态
- 查看Linux操作系统运行状态的命令
- Erlang数据类型的内部实现
- erlang catch的内部实现
- Erlang数据类型的内部实现
- 查看mysql运行状态
- 查看resin运行状态
- 查看Memcached运行状态
- 查看crontab运行状态
- 判断字符串第n位是否为汉字的高位(最原始的方法)
- oracle的简单优化实例分析
- FCKeditor 上传中文文件时文件名乱码
- spring2+struts2实现action间的跳转并给予成功提示
- joomla推荐的DocTypes写法
- 查看Erlang运行期内部状态的方法(基于R13B04)
- VC++6.0调试篇:远程调试
- JAVA注解
- ETL的增量抽取机制
- arm-none-linux-gnueabi vs arm-linux – EABI vs Non-EABI
- java ORC 图片中文识别
- MFC 如何设置鼠标的形状 如何设置光标热区
- swt designer下载与安装
- 棋牌类游戏客户端结构分析