DDD调试opencore/stagefright

来源:互联网 发布:软件安全测试报告 编辑:程序博客网 时间:2024/05/21 10:17

http://blogold.chinaunix.net/u2/61880/showart_2393482.html


具体步骤如下:
开一个shell

adb shell
ps查看mediaserver进程号
gdbserver :5039 --attach pid
(为什么是mediaserver呢,因为opencore/stagefright都被mediaserver进程引用)
 
再开一个shell

adb forward tcp:5039 tcp:5039
cd /home/edwin/Android-dev/FroYo
ddd -debugger arm-eabi-gdb out/target/product/generic/symbols/system/bin/mediaserver

而后会进入ddd程序
在其console窗口执行如下两个命令,事实上会从下面指定目录加载so库

set solib-absolute-prefix /home/edwin/Android-dev/FroYo/out/target/product/generic/symbols
set solib-search-path /home/edwin/Android-dev/FroYo/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的使用,就要参考相关文档了