`
txf2004
  • 浏览: 6881158 次
  • 性别: 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开发项目, 一个...经过研究,终于把asterisk整个项目部署到了Linux下的netbeans 5.5.1 IDE上了,通过这个IDE,我们可以进行asterisk源代码的学习、调试,这样一举两得的事情,何乐而不为呢?

    Asterisk.Cookbook(第1版)

    中文名: Asterisk Cookbook (第1版) 原名: Asterisk Cookbook: Solutions to Everyday Telephony Problems 作者: Leif Madsen Russell Bryant 资源格式: PDF 版本: 英文文字版/更新EPUB版本 出版社: O'Reilly书号: ...

    asterisk部署文档

    //安装asterisk: tar zxvf asterisk-1.6.2.8-rc1.tar.gz cd asterisk-1.6.2.8-rc1 ./configure make make install make config make samples cd .. //安装asterisk扩展包(H323\mysql支持): tar zxvf asterisk-...

    Asterisk:The Futrue of Telephony

    Asterisk:The Futrue of Telephony 是一本详细介绍Asterisk技术的很好的参考书,全英文,原汁原味,参考和使用价值极高。

    asterisk for windows

    Asterisk[1] 是一个开放源代码的软件VoIP PBX系统,它是一个运行在Linux环境下的纯软件实施方案。Asterisk是一种功能非常齐全的应用程序,提供了许多电信功能,能够把你的x86机 器变成你自己的交换机,还能够当作一...

    Asterisk: The Future of Telephony

    Asterisk介绍及配置,开源PBX解决方案

    Asterisk 代码学习笔记,深入浅出asterisk,asterisk通道,呼叫情景(call scenario)

    Asterisk 代码学习笔记,深入浅出asterisk,由于工作上的VOIP项目需要,最近亲密接触了一下asterisk工程代码。关于asterisk在VOIP上的伟大地位和作用,俺就不絮叨了,请看前作:Astersik+Radius简易攻略 国内对于...

    Asterisk 简介 Asterisk 架构 Asterisk程序框图

    Asterisk 简介 Asterisk 架构 Asterisk程序框图

    Asterisk: The Definitive Guide, 3rd Edition

    Design a complete VoIP or analog PBX with Asterisk, even if you have no previous Asterisk experience and only basic telecommunications knowledge. This bestselling guide makes it easy, with a detailed ...

    asterisk:Alpine Linux上的Docker中的Asterisk PBX。 最小的星号! ;)

    带有Asterisk PBX的最小Docker镜像 该映像基于Alpine Linux映像,该映像仅为5MB映像,并且包含 。 该图像的latest标签(基于Alpine linux)的总大小为: 对于debian-stretch-slim-15-current 。 自定义UID / GID ...

    Asterisk权威指南中文

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

    Avaya Asterisk Logger:AstLogger启用Asterisk for Avaya系统中的呼叫记录。-开源

    该软件使用Avaya TSAPI库,它对Avaya端的座席分机进行单步会议(SSC)呼叫,并将语音路径与Asterisk桥接。 在Avaya和Asterisk之间建立了语音路径之后,Asterisk负责通话记录。 呼叫详细信息存储在MySQL数据库中,...

    docker-asterisk-lua:星号+ Lua泊坞窗图片

    docker-asterisk-lua 关闭看 具有星号和lua环境的Docker容器星号1.8 docker pull antirek / asterisk-lua:asterisk1.8星号11 泊坞窗拉antirek / asterisk-lua:asterisk11 docker pull antirek / asterisk-lua:...

    Asterisk中文语言包

    chown -R asterisk:asterisk cn 修改sip_general_custom.conf(作为测试,在所有SIP 通道上启用提示语为中文,在实际应用中,可根据需要修改--zapata-channels.conf,sipXXX.conf,IAXXXX.conf...,也可在FreePBX的WEB界面...

    ya-node-asterisk:用于 Asterisk 管理器界面的 node.js 客户端库

    支持的 Asterisk 版本:全部(主要使用 Asterisk 11、13 和 16 进行测试)。 支持的 node.js 版本:12+。 小(约 350 行代码) 没有依赖低级(AMI 事件和操作作为纯 JavaScript 对象处理) 支持 Promises/async-...

    Asterisk权威文档(第3版)

    原名: Asterisk: The Definitive Guide, 3rd Edition 作者: Leif Madsen Jim Van Meggelen Russell Bryant 资源格式: PDF 版本: 英文文字版/更新EPUB版本 出版社: O'Reilly书号: 978-0-596-51734-2发行时间: 2011年...

    docker-asterisk:用于 Asterisk PBX 的 Dockerfile

    码头工人星号 用于 Asterisk PBX 的 Dockerfile

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

    Asterisk Commander是一个PHP脚本,它允许通过Web浏览器远程执行Asterisk命令(例如asterisk cli'asterisk -r')。

    asterisk-java:用于Asterisk PBX集成的免费Java库

    FastAGI比Dialplan快数千倍,更易于调试,并允许您使用熟悉的语言进行呼叫控制。 FastAGI实现支持Asterisk当前提供的所有命令。 经理API Manager API实现支持从Asterisk服务器接收事件(例如,呼叫过程,注册的...

Global site tag (gtag.js) - Google Analytics