查看Erlang运行期内部状态的方法(基于R13B04)
2011-05-06 15:25
253 查看
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会提示失败.
我们演示下:
view source
print?
在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会提示失败.
我们演示下:
view source
print?
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 internalep_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如何查看gen_server内部的状态
- WebService异常时,查看请求状态码方法
- Linux查看端口使用状态、关闭端口方法
- Linux下apache日志(按日期存放)分析与状态查看方法
- Linux下apache日志分析与状态查看方法
- 查看基于Android 系统单个进程内存、CPU使用情况的几种方法
- 查看memcache的状态的方法
- Linux下查看SELinux状态和关闭SELinux的方法
- 基于单片机的多按键多状态检测方法
- Linux查看端口使用状态、关闭端口方法
- 查看基于Android 系统单个进程内存和CPU使用情况的几种方法
- Linux下apache日志分析与状态查看方法
- 当电脑的wmic 显示不是内部或外部命令的解决方法以及查看电脑最大支持内存
- 查看基于Android 系统单个进程内存、CPU使用情况的几种方法
- Linux查看服务的运行状态,并且启动和停止服务的方法(转)
- Linux下apache日志(按日期存放)分析与状态查看方法
- 通过浏览器查看nginx服务器状态配置方法
- Linux系统中查看硬件信息与运行状态的方法总结
- MySql状态查看方法 MySql如何查看连接数和状态?
- Linux查看端口使用状态、关闭端口方法