MeeGo开发进程通信核心 DBus调试工具
2011-09-02 23:24
330 查看
我们讲过用QML语言开发MeeGo应用程序,在MeeGo开发中,DBus是MeeGo进程通信的核心。我们简要的看一下MeeGo系统的哪些地方都使用了DBus.
1.从一个应用中启动另一个应用时。比如在联系人应用中想要拨打联系人的电话时,MeeGo系统中是通过DBus做进程通信的.
2.Service Framework是基于DBus的。比如你看到一个多媒体文件,点击提交一个"播放文件"的请求,该请求搜索合适的应用来播放该文件.
3.发布和订阅者系统。比如一个屏幕上的显示订阅了电池的电量消息,则在电量变化时通过DBus通知订阅者.
4.Notification Manager也是基于DBus的。如有短信到达,Notification Manger会进行提示.
5.系统的配置文件如果想在变动的时候通知MeeGo中感兴趣的应用,也需要用到DBus,比如主题的变化等.
6.蓝牙中间件bluez和电话管理系统ofono的进程通信系统也是基于DBus的。
鉴于DBus的这种重要性,可以说"没有DBus就没有MeeGo。那么我们也有必要了解一下MeeGo中有哪些DBus工具可以使用,方便在开发过程中遇到问题时更快的定位和解决问题。
准备DBUS_SESSION_BUS_ADDRESS
两个基于DBus的应用要能进行通信,他们需要有同样的DBUS_SESSION_BUS_ADDRESS.MeeGo在启动它的uxlaunch时,会启动一个DBus的服务进程,可以从这个进程里得到DBUS_SESSION_BUS_ADDRESS的值,而且通过uxlaunch加载的应用会继承该环境变量,如果是自己从命令行启动的话,那么需要在运行你的应用前设置好该环境变量,才能正常的和MeeGo系统里的已有应用进行通信。可以通过如下方法设置该值.
工具1:dbus-send/dbus-monitor
这个是随dbus软件包一起发布的工具,封装比较底层,这里不做介绍了。可以在控制台命令行里输入man dbus-send查询详细用法。
工具2:qdbus
该工具是基于Qt的一个命令行工具。用法如下
有两个参数
system 连接到system-bus(dbus有两种bus,一种是session-bus,一种是system-bus,不加参数默认连接到session-bus.)
literal 打印原始返回信息
* 如果qdbus命令不带任何参数,将会列出在dbus上所有的service.
* 假如参数里只有service的名字,那么qdbus会列出所有的对象路径.
* 如果qdbus命令给出了service的名字和对应的对象路径,则该路径上的方法,信号和可用的属性都会被列出来.
列出system bus的所有service
列出com.nokia.meego-im-uiserver service上所有路径
列出com.nokia.meego-im-uiserver service上某一路径里可用的方法
调用指定service,指定路径上的某个方法。
工具3:d-feet
d-feet是一个用python写的应用,在MeeGo中可以用如下命令安装
要查看系统里有哪些已经注册的dbus service, 运行d-feet命令
![](http://images.51cto.com/files/uploadimg/20110225/1545120.png)
如要调用指定的method,在对应的method上双击就可以了.
![](http://images.51cto.com/files/uploadimg/20110225/1545121.png)
如要如果该method需要参数,则会弹出参数选项框
![](http://images.51cto.com/files/uploadimg/20110225/1545122.png)
工具4:qdbusviewer
qdbusviewer则是Qt软件包中的一个开发工具,在MeeGo中可以用如下命令安装
要查看系统里有哪些已经注册的dbus service, 运行qdbusviewer命令
![](http://images.51cto.com/files/uploadimg/20110225/1545123.png)
如果想调用对应的method,在该方法上点击鼠标右键,可以看到Call字样,选择即可
![](http://images.51cto.com/files/uploadimg/20110225/1545124.png)
结语
有了这些工具,你不仅可以很方便的知道系统里的服务是不是正常被注册运行了。还可以无中生有的产生一些事件,比如模拟短信收到,或者电话拨入等。这样你在模拟器上也可以调试一些本啦需要硬件支持的功能了。
1.从一个应用中启动另一个应用时。比如在联系人应用中想要拨打联系人的电话时,MeeGo系统中是通过DBus做进程通信的.
2.Service Framework是基于DBus的。比如你看到一个多媒体文件,点击提交一个"播放文件"的请求,该请求搜索合适的应用来播放该文件.
3.发布和订阅者系统。比如一个屏幕上的显示订阅了电池的电量消息,则在电量变化时通过DBus通知订阅者.
4.Notification Manager也是基于DBus的。如有短信到达,Notification Manger会进行提示.
5.系统的配置文件如果想在变动的时候通知MeeGo中感兴趣的应用,也需要用到DBus,比如主题的变化等.
6.蓝牙中间件bluez和电话管理系统ofono的进程通信系统也是基于DBus的。
鉴于DBus的这种重要性,可以说"没有DBus就没有MeeGo。那么我们也有必要了解一下MeeGo中有哪些DBus工具可以使用,方便在开发过程中遇到问题时更快的定位和解决问题。
准备DBUS_SESSION_BUS_ADDRESS
两个基于DBus的应用要能进行通信,他们需要有同样的DBUS_SESSION_BUS_ADDRESS.MeeGo在启动它的uxlaunch时,会启动一个DBus的服务进程,可以从这个进程里得到DBUS_SESSION_BUS_ADDRESS的值,而且通过uxlaunch加载的应用会继承该环境变量,如果是自己从命令行启动的话,那么需要在运行你的应用前设置好该环境变量,才能正常的和MeeGo系统里的已有应用进行通信。可以通过如下方法设置该值.
1. export `tr ‘\0′ ‘\n’ < /proc/$(pidof duihome)/environ|grep DBUS_SESSION_BUS_ADDRESS`
工具1:dbus-send/dbus-monitor
这个是随dbus软件包一起发布的工具,封装比较底层,这里不做介绍了。可以在控制台命令行里输入man dbus-send查询详细用法。
工具2:qdbus
该工具是基于Qt的一个命令行工具。用法如下
1. qdbus [--system] [--literal] [servicename] [path] [method] [args] 2. servicename the service to connect to (e.g., org.freedesktop.DBus) 3. path the path to the object (e.g., /) 4. method the method to call, with or without the interface 5. args arguments to pass to the call
有两个参数
system 连接到system-bus(dbus有两种bus,一种是session-bus,一种是system-bus,不加参数默认连接到session-bus.)
literal 打印原始返回信息
* 如果qdbus命令不带任何参数,将会列出在dbus上所有的service.
* 假如参数里只有service的名字,那么qdbus会列出所有的对象路径.
* 如果qdbus命令给出了service的名字和对应的对象路径,则该路径上的方法,信号和可用的属性都会被列出来.
qdbus 用法举例
列出session bus的所有service1. $ qdbus
列出system bus的所有service
1. $ qdbus system
列出com.nokia.meego-im-uiserver service上所有路径
1. $ qdbus com.nokia.meego-im-uiserver
列出com.nokia.meego-im-uiserver service上某一路径里可用的方法
1. $ qdbus com.nokia.meego-im-uiserver /org/maemo/duiinputmethodserver1
调用指定service,指定路径上的某个方法。
1. $ qdbus com.nokia.meego-im-uiserver /org/maemo/duiinputmethodserver1 org.maemo.duiinputmethodserver1.showInputMethod
工具3:d-feet
d-feet是一个用python写的应用,在MeeGo中可以用如下命令安装
1. #zypper install d-feet
要查看系统里有哪些已经注册的dbus service, 运行d-feet命令
1. #d-feet
![](http://images.51cto.com/files/uploadimg/20110225/1545120.png)
如要调用指定的method,在对应的method上双击就可以了.
![](http://images.51cto.com/files/uploadimg/20110225/1545121.png)
如要如果该method需要参数,则会弹出参数选项框
![](http://images.51cto.com/files/uploadimg/20110225/1545122.png)
工具4:qdbusviewer
qdbusviewer则是Qt软件包中的一个开发工具,在MeeGo中可以用如下命令安装
1. #zypper install qt-devel-tools
要查看系统里有哪些已经注册的dbus service, 运行qdbusviewer命令
1. #qdbusviewer
![](http://images.51cto.com/files/uploadimg/20110225/1545123.png)
如果想调用对应的method,在该方法上点击鼠标右键,可以看到Call字样,选择即可
![](http://images.51cto.com/files/uploadimg/20110225/1545124.png)
结语
有了这些工具,你不仅可以很方便的知道系统里的服务是不是正常被注册运行了。还可以无中生有的产生一些事件,比如模拟短信收到,或者电话拨入等。这样你在模拟器上也可以调试一些本啦需要硬件支持的功能了。
相关文章推荐
- MeeGo开发进程通信核心 DBus调试工具
- MeeGo开发“.NET研究”进程通信核心 DBus调试工具
- 使用IE8开发工具调试时,遇到“无法附加进程,进程可能附加了另一个调试程序”的解决方案
- MeeGo的DBus调试工具
- MeeGo的DBus调试工具
- MeeGo的DBus调试工具
- 阿里巴巴分布式搜索引擎isearch3核心技术栈以及开发、调试工具一览
- MeeGo的DBus调试工具
- 进行 HTML、JavaScript 和 Ajax 开发和调试的必用工具
- [微信开发利器]微信内移动前端开发抓包调试工具fiddler使用教程
- meego中dbus服务程序开发的一点总结
- 应用程序开发-进程通信-管道
- IT 前端调试:足迹第二十五步node.js的配置(开发前端需要准备哪些工具)
- 七款Debug工具推荐:iOS开发必备的调试利器
- IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)
- [转] 前端开发必备工具之网页调试工具篇
- [ARM7--LPC2129]ULINK调试工具开发LPC2129程序时Keil uVision4中的工程选项配置
- C#超级通信调试工具
- Linux驱动开发常用调试工具---之内存读写工具devmem
- RVDS和MDK嵌入式开发工具调试脚本编写