如何使用gdb调试android webkit内核代码
来源:互联网 发布:模拟买基金的软件 编辑:程序博客网 时间:2024/06/05 18:19
如何使用gdb调试android webkit内核代码
红心地瓜
原文链接:http://blog.csdn.net/dlmu2001/article/details/6904211
得益于脚本的帮助,在Emulator中使用GDB调试Native Code的设置非常简单,比如我用gdb+gdbserver调试webkit
1. 找到你的toolchain对应的gdb,在模拟器上是arm-eabi-gdb,在prebuild下,把它的目录加到PATH里面
export PATH=$ANDROID_SRC/prebuilt/linux-x86/tootlchain/arm-eabi-4.4.0/bin:$PATH
或者直接加到~/.bashrc里面
2 执行配置脚本
cd$ANDROID_SRC
source build/envsetup.sh
3 启动模拟器,运行浏览器
l gdbclient app_ process :5039 browser
此时就能看到gdb顺利启动起来了(尽管有warning),此时就可以使用你熟悉的gdb命令了
看到
15 ldmdf sp! {r4,r7}
Currentlanguage: auto;current asm
4 设置断点
bFrameLoaderClientAndroid.cpp:868
5 执行
c
6 访问一个网址,就可以看到gdb断点了,enjoy it!
在target上搭建这个环境复杂一点,因为target出于空间的考虑,编译的是release库,而且有一个prelink的过程,主要是要修改map文件来放下webcore的debug库。
在target上搭建这个环境复杂一点,因为target出于空间的考虑,编译的是release库,而且有一个prelink的过程,主要是要修改map文件来放下webcore的debug库。
以下的实验环境是我的htc magic + cm6.0
1 .如果$ANDROID_SRC根目录下没有buildspec.mk,执行以下操作,如果有,忽略此步骤
mv build/buildspec.mk.default build/buildspec.mk
2. 修改buildspec.mk,加入以下几行
DEBUG_MODULE_libwebcore:=true
DEBUG_MODULE_libxml2:=true
TARGET_CUSTOM_DEBUG_CFLAGS:=-O0 -mlong-calls
"ADDITIONAL_BUILD_PROPERTIES+= debug.db.uid=100000
lmka bacon编译,prelink失败
prelink maperror: library libwebcore.so@0xa8300000 is too big at 10644851 bytes, it runs3304819 bytes into librarylibexpat.so@0xa8a00000!
可以看出,libwebcore有3M的空间越界了,其实我加了3M还不够,是3M多一点,所以要加4M
3.修改$ANDROID_SRC/build/core/prelink-linux-arm.map(改前请备份哦)
搜索libwebcore.so,发现
libsqlite.so 0xA8B00000 # [~2M]
libexpat.so 0xA8A00000 # [~1M]
libwebcore.so 0xA8300000 # [~7M]
将libwebcore.so的大小加到11M,也就是如下
libsqlite.so 0xA8F00000 # [~2M]
libexpat.so 0xA8E00000 # [~1M]
libwebcore.so 0xA8300000 # [~11M]
libsqlite.so之上的.so也要对应改动,这里忽略。有一点小工作量,网上有介绍可以通过修改Android.mk来disable prelink,我试了下,没有成功,所以我就老老实实改了这个prelink的map文件。
剩下的就和emulator一样了。
- 如何使用gdb调试android webkit内核代码
- 如何使用gdb调试android webkit内核代码
- 使用GDB调试Android 4.0中的WebKit
- 使用GDB调试Android 4.0中的WebKit
- 用gdb调试 android webkit
- gdb调试android的webkit
- 如何使用Qemu+gdb来调试内核
- gdb调试android内核
- 如何使用gdb结合qemu调试linux内核源码
- 如何使用gdb结合qemu调试linux内核源码
- 如何使用gdb结合qemu调试linux内核源码
- 使用 GDB 调试 uCLinux 内核
- 使用 GDB 调试 uCLinux 内核
- 使用gdb调试linux内核
- 使用gdb调试linux内核
- 使用Gdb+qemu调试内核:
- 使用gdb调试内核错误信息
- Android 使用gdb调试
- 矩阵连乘问题
- ScrollView下,ListView生存之道
- java android 删除文件和文件夹的函数
- MFC以拼接的方式设置程序的背景,控件背景设置为透明。
- [技术分享]使用Windows Phone 7打开SharePoint上的文档
- 如何使用gdb调试android webkit内核代码
- linux Ruby on Rails安装运行第一个小程序的两 个问题
- 关于Linux log机制的一些整理
- 黑马程序员_java入门_IO流
- javascript原型链
- Microsoft VS2008 MFC 与BCGControlBar的区别
- linux内核数据库sqlite3的移植和简单操作
- extern "C"的用法
- 为没有源码的DLL文件添加强名称