`
txf2004
  • 浏览: 7040906 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

asterisk利器:部署asterisk项目到Netbeans进行实时调试(图解)

阅读更多

为了更好地使用Asterisk开发项目, 一个途径就是有针对性地学习、分析与项目有关的那部分asterisk源代码。虽然说代码是模块化的,但是赤手空拳地针对每个源文件进行学习,确实增加了一定的难度,如果能够借助某些工具来调试asterisk,将是多方便的一件事情呀!经过研究,终于把asterisk整个项目部署到了Linux下的netbeans <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">5.5.1</chsdate> IDE上了,通过这个IDE,我们可以进行asterisk源代码的学习、调试,这样一举两得的事情,何乐而不为呢?废话不多说了,下面开始我们的工作吧:

系统环境

Linux: ubuntu 7.04

IDE: Netbeans <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">5.5.1</chsdate> + C/C++ Pack+Subversion客户端插件

安装方法

l 安装Netbeans IDE

参照官网说明

http://www.netbeans.org/community/releases/55/1/install_zh_CN.html

l 安装C/C++ Development Pack

参照官网说明

http://www.netbeans.org/community/releases/55/1/cnd-install_zh_CN.html

添加asterisk项目到netbeans

这一步是整个过程中最核心的一步,可以按下面的图示进行:

1. 使用netbeans,从服务器签出asterisk源代码到本地

(为了能从签出代码到本地然后以这个源代码创建netbeans项目,不要使用Linux安装了subversion后使用控制台以命令行的方式check out)

输入库的地址:http://svn.digium.com/svn/asterisk/trunk,点击下一步。

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 414.75pt; HEIGHT: 291pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.jpg" o:title="snapshot2"></imagedata></shape>

<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 291pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.jpg" o:title="snapshot2"><font size="3"></font></imagedata></shape>

下面这一向导保持默认选项即可。

<shape id="_x0000_i1027" style="WIDTH: 414.75pt; HEIGHT: 316.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.jpg" o:title="snapshot3"><font size="3"></font></imagedata></shape>

点击完成,等待从服务器接收完SVN库中的文件,接收完成后,将会弹出以下窗口:

<shape id="_x0000_i1028" style="WIDTH: 270pt; HEIGHT: 111.75pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image007.jpg" o:title="snapshot4"><font face="Times New Roman" size="3"></font></imagedata></shape>

选项第一个,进行下一步骤,创建项目,这时候弹出来下面的“新建项目“向导。

2. 创建Netbeans项目

在生成工具选项中,浏览从SVN服务器库中签出到本地的文件中的Makefile文件,选择它作为现有的Makefile文件。

<shape id="_x0000_i1030" style="WIDTH: 414.75pt; HEIGHT: 287.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image010.jpg" o:title="snapshot8"></imagedata></shape>

点击下一步,进入第3步,这一步可以保持默认

<shape id="_x0000_i1031" style="WIDTH: 414.75pt; HEIGHT: 287.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image012.jpg" o:title="snapshot9"></imagedata></shape>

点击下一步,进入第4步,也可以保持默认。

<shape id="_x0000_i1032" style="WIDTH: 414.75pt; HEIGHT: 287.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image014.jpg" o:title="snapshot10"></imagedata></shape>

<shape id="_x0000_i1033" style="WIDTH: 414.75pt; HEIGHT: 287.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image016.jpg" o:title="snapshot11"></imagedata></shape>

点击下一步,进入第5步,这一步也可保持默认

<shape id="_x0000_i1034" style="WIDTH: 414.75pt; HEIGHT: 287.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image018.jpg" o:title="snapshot12"></imagedata></shape>

点击下一步,进入最后一步,进行项目名称和位置的设置,在这里我保持了默认,大家可以重新设定名称。

到这里我们就已经把asterisk整个项目源代码导入到了netbeans中,并生成了本地项目。

接下来我们就可以像传统那样执行三部曲,安装asterisk到指定目录,我们可以在所签出到本地的asterisk项目源代码的目录下,在控制终端中执行./configure&make&make install等操作。对应的编译也可以在netbeans下右击项目,选项重要文件--->Makefile,右击执行make,在这之前也可以新添加configure文件到这个重要文件目录中。

<shape id="_x0000_i1035" style="WIDTH: 253.5pt; HEIGHT: 234.75pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image020.png" o:title="未命名"></imagedata></shape>

3. 当成功编译、安装asterisk后,就可以再回到netbeans进行asterisk的运行、调试了

在开始运行之前,需要指定启动asteriskc参数,右击项目,属性设置常规选项为-vvvvvvc

<shape id="_x0000_i1036" style="WIDTH: 414.75pt; HEIGHT: 311.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image022.jpg" o:title="snapshot20"></imagedata></shape>

main函数中设置一个断点

<shape id="_x0000_i1037" style="WIDTH: 414.75pt; HEIGHT: 291pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image024.jpg" o:title="snapshot15"></imagedata></shape>

点击F5,或者选择运行菜单下的调试主项目选项启动调试

需要说明的是,因为启动asterisk后要往本地几个目录中写入几个文件,如asterisk.pid或者日志文件messages等,所以如果碰到了启动失败的提示后,到相应的目录chmod 777赋予写的权限。

<shape id="_x0000_i1038" style="WIDTH: 414.75pt; HEIGHT: 291pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image026.jpg" o:title="snapshot17"></imagedata></shape>

程序成功启动后,将在asterisk.c中的2610行的main()函数处停业,这也是asterisk的入门点,并弹出来程序终端,这也可以通过设置,在netbeans的输出控制台显示,但这样调试起来会不太方便,所以还是使用默认的,即Linux默认终端。如下图所示:

<shape id="_x0000_i1039" style="WIDTH: 414.75pt; HEIGHT: 311.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image028.jpg" o:title="snapshot19"></imagedata></shape>

假如我想看看asterisk的Dynamic Module Loader是如何装载如个模块,可以在loader.c的 load_module函数设置一个断点,当程序运行到此处时可以通过单步调试查看整个过程。

<shape id="_x0000_i1040" style="WIDTH: 414.75pt; HEIGHT: 311.25pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CGAOLIN~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image030.jpg" o:title="snapshot22"></imagedata></shape>

关于如何使用netbeans的Debug功能以及其它的功能,大家可以参看官方网址给出的文档:http://cnd.netbeans.org/docs/index.html

本文档只针对如何调试asterisk项目,有关asterisk方面的请参考其它文档。

下载本文档:http://d.download.csdn.net/down/267275/lin_bei

分享到:
评论

相关推荐

    部署asterisk项目到Netbeans进行实时调试(图解)

    标题中的“部署asterisk项目到Netbeans进行实时调试(图解)”是指将开源的PBX系统Asterisk的源代码导入到Netbeans集成开发环境中,以便进行代码学习、调试和项目开发。Asterisk是一个强大的通信平台,允许开发者构建...

    Asterisk:The Futrue of Telephony

    ### Asterisk:电话系统的未来 #### 一、Asterisk技术概述 《Asterisk:电话系统的未来》这本书深入探讨了Asterisk技术的核心概念及其在现代通信领域中的应用。Asterisk是一种开源的框架,它能够将计算机变成一个...

    Asterisk权威指南中文

    Asterisk权威指南中文(第3版) Asterisk权威指南(第3版)第15章自动话务员 Asterisk权威指南(第3版)第02章Asterisk体系结构 Asterisk权威指南(第3版)第05章用户设备配置 Asterisk权威指南(第3版)第06章Dialplan基础 ...

    Asterisk: The Definitive Guide, 3rd Edition

    ### Asterisk: The Definitive Guide, 3rd Edition #### 核心知识点解析 **一、概述** 《Asterisk: The Definitive Guide》是关于Asterisk开源PBX(Private Branch Exchange)系统的权威指南,适用于Linux管理员...

    通过asterisk-java操作asterisk

    6. **实时监控**:通过Asterisk-java,你可以实时监控系统的状态,包括在线用户、占用的资源、正在进行的通话等,这对于故障排查和性能优化非常有用。 7. **源码分析**:对于标签中的“源码”,意味着你可能需要...

    Asterisk 简介 Asterisk 架构 Asterisk程序框图

    - 控制接口:管理员可以通过CLI或Web界面对系统进行实时监控和配置。 ### 实战应用 Asterisk可以用于构建多种通信系统,例如: - **小型PBX**:为小型企业搭建内部通信系统,节省传统电话线路成本。 - **呼叫中心**...

    Asterisk 之数据库配置方案 asterisk数据库

    在进行数据库配置之前,我们需要先按照常规配置对 Asterisk 进行配置,然后将配置从配置文件迁移到数据库中。数据库配置可以使用 MySQL、PostgreSQL 等数据库管理系统。 VI. 结论 Asterisk 之数据库配置方案可以...

    Asterisk: The Future of Telephony

    ### Asterisk:电话系统的未来 #### 一、Asterisk简介与重要性 Asterisk是一款开源的电话系统平台,由Mark Spencer于1999年创建,旨在为用户提供一个高度灵活且功能丰富的电话通信解决方案。它不仅仅局限于传统的...

    Asterisk服务器的搭建与配置.docx

    Asterisk服务器的搭建与配置 Asterisk服务器是一种开源的基于voip的通信服务器软件,可以实现语音通话、视频会议、短信服务等功能。下面是Asterisk服务器的搭建与配置过程。 一、安装Asterisk服务器 首先,需要在...

    asterisk 教程

    - `/etc/asterisk/logger.conf`:日志调试信息配置。 - `/etc/asterisk/manager.conf`:管理账号配置。 - `/etc/asterisk/meetme.conf`:会议设置。 - `/etc/asterisk/modules.conf`:模块加载配置。 - `/etc/...

    asterisk部署文档

    在CentOS 5.4操作系统上部署Asterisk需要经过一系列步骤,包括环境准备、依赖安装、Asterisk及其扩展包的下载与安装,以及数据库配置等。以下是详细过程: 1. **环境准备**: - 首先,登录到CentOS系统,并切换到...

    asterisk20编译的相应包编译包

    这里是asterisk20编译的相应编译包,asterisk完整可以运行的docker镜像、快速部署,可以直接sip语音、视频、彩铃会话,通话稳定 codec_opus-20.0_current-x86_64.tar.gz srtp-1.4.4.tgz pjproject-2.13.1.tar.bz2 ...

    asterisk16版本安装包

    - **API支持**:Asterisk提供了AMI(Asterisk Management Interface)和Ari(Asterisk REST Interface),方便开发者进行集成和扩展。 2. **Asterisk 16版本特性**: - Asterisk 16是Asterisk的一个主要版本,...

    asterisk 安装教程

    chown -R asterisk:asterisk /var/run/asterisk chmod 775 /var/run/asterisk ``` 配置Asterisk的基本设置。编辑`/etc/asterisk/ast.conf`文件,根据你的网络环境和需求进行调整。 启动Asterisk服务: ```bash /...

    Asterisk AMI 接口代码

    - `ManagerEvent`:Asterisk AMI会发送各种事件,如`NewChannel`、`Hangup`等,这些事件在Java库中表现为`ManagerEvent`的子类。 - `ManagerListener`:实现这个接口,可以注册到`ManagerConnection`,以监听和处理...

    Ubuntu16.0.4环境下的Asterisk安装经验

    此时,可以继续安装Asterisk: ```bash make install ``` ##### 4. 启动Asterisk服务 安装完成后,可以通过以下命令启动Asterisk服务: ```bash asterisk -r ``` 如果一切正常,Asterisk应该会顺利启动,并且...

    Asterisk.NET 1.6.3 控制Asterisk

    在使用前,你需要将其解压,并根据项目需求引用相关的库文件到你的.NET项目中。 总结来说,Asterisk.NET 1.6.3 提供了.NET平台下控制Asterisk PBX的强大工具,通过AMI和FastAGI接口实现了丰富的电话系统功能,如...

    asterisk 学习日志

    在学习Asterisk时,使用命令`asterisk -vvvg –cps -C`可以开启更详细的调试模式,这对于排查问题和理解系统运行状态非常有帮助。同时,了解如何阅读和分析日志文件(如`backtrace.txt`)也是必要的技能。 2. **...

    Asterisk commander:星号管理器PHP CLI-开源

    - **日志查看**:Asterisk Commander可能包含查看和搜索系统日志的功能,这对于故障排查非常有用。 - **脚本支持**:高级用户还可以编写和执行多步骤脚本,自动化常见任务。 4. **安装与配置** 安装Asterisk ...

Global site tag (gtag.js) - Google Analytics