asterisk安装调试文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Asterisk安装:
安装命令: yum instll asterisk
这个命令安装的普通的release版本
如果需要调试:
到SVN下载asterisk-1.8.8.1上传到虚拟机上
执行./configure --配置makefile文件
Make --编译asterisk
Make install --安装asterisk
Asterisk一般配置
用户配置:用户是在数据库中配置的
相关配置文件:
1.extconfig.conf,配置用户数据来源
sipusers => mysql,global,soc_pbx_users;
sippeers => mysql,general,soc_pbx_users;
mysql:固定,是指用户加载方式
general:对接res_mysql.conf的数据库连接配置
soc_pbx_users:用户所在的表
2.res_mysql.conf配置数据库连接串
[general]
dbhost = 10.1.18.105数据库地址
dbname = asterisk 数据库表空间
dbuser = asterisk 数据库用户名
dbpass = asterisk 数据库密码
dbport = 3306 数据库端口
话单配置: 如不需要话单,可以不配置该项
配置文件:cdr_mysql.conf
配置项:
[general] 和extconfig.conf中配置对应
dbhost = 10.1.18.105数据库地址
dbname = asterisk 数据库表空间
dbuser = asterisk 数据库用户名
dbpass = asterisk 数据库密码
dbport = 3306 数据库端口
[produre] 标志调用存储过程配置项
produrename=p_insert_record存储过程名次
paraNum=7 存储过程参数
paraname1=src 下面是存储过程参数列表,值需要对应cdr的关键字paraname2=dst
paraname3=dcontext
paraname4=clid
paraname5=channel
paraname6=dstchannel
拨号方案配置:
[default-test] --对应USER表中的context字段
exten => _XXX.,1,Set(CALLFILENAME=${CALLERID(num)}_${EXTEN}_${UNIQUEID})
exten => _XXX.,n,Dial(SIP/${EXTEN},10,m)
exten => _XXX.,n,Hangup()
运行命令: service asterisk start 开始
Service asterisk stop 停止
Service asterisk restart 重启
调试步骤:
1.执行gdb asterisk
2.由于涉及到动态库调用,在asterisk主程序中可能没有涉及到所需要调试的代码,所以需要
先预先找到所涉及的代码路径,代码文件名称,需要断点的行数
执行 b chan_sip.c:20333 b 是break简称chan_sip.c文件名20333行号
可能会提示:No source file named chan_sip.c.
Make breakpoint pending on future shared library load? (y or [n])
选y
执行info break可以看到当前断点列表,如下
Num Type Disp Enb Address What
1 breakpoint keep y
3.运行程序
Run -vvvvvvvvg -vvvvvvg是程序运行阐述
4.使用软终端调用服务,确保调用流程可以走到所设立的断点处
Gdb命令
N单步执行
C 执行到下一个断点,如果只有一个断点,直接走完liuc
S 进入到函数中执行
Bt 查看进程调用堆栈,可以直观的看到程序调用路径
P变量名限制变量的值
一.ASTERISK各个模块功能介绍:
内核模块
内部核心由以下六个部分组成:PBX交换核心模块(PBX Switching Core)、调度和I/O管理模块(Scheduler and I/O Manager)、应用调用模块(Application Launcher)、编解码转换模块(Codec Translator)、动态模块加载器模块(Dynamic Module Loader)和CDR生成模块(CDR Core)。
pbx.c是asterisk的核心模块,每路呼叫都需要经过它调度。pbx实现了builtin applications,也就是内置的应用,比如最常见的Answer,Hangup, Background,Wait等等。
pbx_exec是Answer/BackGround/Busy/Goto/GotoIf/Hangup/Set等builtin applications的执行入口函数,它被pbx_extension_helper调用