Chinaunix首页 | 论坛 | 博客
  • 博客访问: 412283
  • 博文数量: 38
  • 博客积分: 2513
  • 博客等级: 少校
  • 技术积分: 471
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-22 13:35
文章分类

全部博文(38)

文章存档

2010年(4)

2009年(6)

2008年(28)

我的朋友

分类: 嵌入式

2010-11-12 13:52:58

Google为Android应用开发提供了eclipse加插件作为开发工具,基于eclipse可以方便调试apk,而对于底层开发人员(比如opencore开发)没有提供类似直观的开发工具及调试手段。本文旨在介绍一种基于ddd+gdbserver的调试方法,用于类似opencore的C层面的程序调试。
 
具体步骤如下:
开一个shell
adb shell
ps查看mediaserver进程号
gdbserver :5039 --attach pid
(为什么是mediaserver呢,因为opencore/stagefright都被mediaserver进程引用)
 
再开一个shell
adb forward tcp:5039 tcp:5039
cd /working/myandroid
ddd –debugger arm-eabi-gdb out/target/product/generic/symbols/system/bin/mediaserver
而后会进入ddd程序
在其console窗口执行如下两个命令,事实上会从下面指定目录加载so库
set solib-absolute-prefix /working/myandroid/out/target/product/generic/symbols
set solib-search-path /working/myandroid/out/target/product/generic/symbols/system/lib接下来连接server端,执行命令target remote :5039
执行完该命令后要略等一下,此时gdb会加载所需的so库
此时可以在ddd源码浏览窗口打断点,或者在console窗口通过命令置断点,
比如:b createPlayer,
然后执行命令c
 
至此DDD方面完成,接下来进入模拟器,点击播放视频,即可进入断点
 
如果想在纯命令行下调试,执行
arm-eabi-gdb out/target/product/generic/symbols/system/bin/mediaserver
 
ddd下的调试,关于ddd的使用,就要参考相关文档了
 
 
阅读(6414) | 评论(3) | 转发(2) |
给主人留下些什么吧!~~

stavy2010-12-02 20:25:51

一楼: 是ddd的console里输入 二楼: 按照上述步骤就可以啊,attach process是通过adb shell进入到模拟器内部执行的

chinaunix网友2010-12-02 16:42:55

进入ddd程序,没有任何东西被打开 通过菜单file->attach to process ,还是没有效果。 该如何才能开到窗口上的代码呢?

chinaunix网友2010-12-02 16:34:43

你好,按照你的步骤到了进入ddd程序后,没有任何代码出现,该如何找到这些代码呢? 在其console窗口执行如下两个命令,事实上会从下面指定目录加载so库 set solib-absolute-prefix /working/myandroid/out/target/product/generic/symbols set solib-search-path /working/myandroid/out/target/product/generic/symbols/system/lib接下来连接server端 这个在哪个终端输入呢?