Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1399139
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: Erlang

2013-03-15 22:29:09

       首先,对于erlang的源码的分析方式的问题。
           erlang与C/C++/Java/python都有明显的区别,用OO的方式逆向有些局限性。
           erlang是进程式的、消息通信的、模块式组装的,接口调用的语言。
           因此尝试了动态调试的方式来解读源码,在关键的接口处给出接口调用时的打印进程ID,模块名,函数名,重要的参数。
           其中最重要的一部分调试信息是要tsung启动时的进程之间的关系。
           对于erlang来说,进程是最重要的东西,进程又有几个重要的东西。
                 进程树。
                 进程的状态,也就是它所维护的数据,不像c/c++/java中的对象数据存在关联,进程的数据都是独立的,私有的。
                 进程(模块)对外的接口。
                 进程(模块)之间的通信内容。
                
                 
       其次,对与erlang中的若干概念的理解
             gen_fsm定义的状态机与C/C++中定义状态机的方式不同,C/C++中一般都是定义转换表的方式,
             特定状态遇到特定的事件时,执行的函数是直接看到的,而gen_fsm这些都是在函数中定义的,隐藏了。
            并且erlang中的状态定义与C/C++中的宏式定义不同,它的状态就是处理函数。
             erlang定义状态变迁的格式也很奇特{next_state,function,FsmContext}
             同时gen_fsm也对事件的产生方式和接收方式给出了要求
             gen_fsm:send_event                      ------------接收2个参数的自定义的状态变迁
             gen_fsm:send_all_state_event         ------------handle_event
             gen_fsm:sync_send_event              -------------接收3个参数的自定义的状态变迁
             gen_fsm:sync_send_all_state_event -------------handle_sync_event

              erlang中的几种模式,supervisor,gen_server,gen_event,gen_fsm
               它们都类似C++中的基类,一般都是基类提供运行的框架,派生类提供具体的业务逻辑。
               继承erlang中的模式后,需要重新重新它所需的接口就行了,框架就会调用这些重写的方法。
       
      
阅读(3061) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~