如何在安卓系统上使用arm-linux-gdb调试内核

如何在安卓系统上使用arm-linux-gdb调试内核,第1张

1,先下载最新版本的gdb源代码包,我使用的是gdb-7.6.tar.gz,使用tar命令进行解包(tar -xvzf gdb-7.6.tar.gz),cd进gdb-7.6/gdb目录,使用vi找到remote.c中的如下代码:

if(buf_len >2 * rsa->sizeof_g_packet)

error(_("Remote 'g' packet reply is too long: %s"),rs->buf)

将上面两行注释掉,添加如下代码

if(buf_len >2 * rsa->sizeof_g_packet)

{

rsa->sizeof_g_packet = buf_len

for(i = 0i <gdbarch_num_regs(gdbarch)i++)

{

if(rsa->regs[i].pnum == -1)

continue

if(rsa->regs[i].offset >= rsa->sizeof_g_packet)

rsa->regs[i].in_g_packet = 0

else

rsa->regs[i].in_g_packet = 1

}

}

使用如下命令对代码进行配置、编译和安装

./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v

make

make install

2,gdbserver使用android4.2模拟器中自带的版本(v7.1)

3,将NDK编译好的C/C++可执行程序,上传到模拟器中/data/test目录下,假设可执行程序的名称为testHello。

4,使用命令:gdbserver :7000 /data/test/testHello 启动模拟器端的调试。

5,启动arm-linux-gdb之前,使用vi打开~/.bash_profile文件,在其中添加:

export PATH=$PATH:/usr/local/arm-gdb/bin,以便在程序的其他目录可以直接启动arm-linux-gdb程序

6,cd至ndk编译好的testHello文件所在目录

7,使用如下命令进行端口映射:adb forward tcp:7000 tcp:7000,将模拟器的7000端口和本机的7000端口进行映射

8,使用命令:arm-linux-gdb testHello启动gdb调试

9,使用target remote :7000 链接模拟器中gdbserver启动的服务。

10,自此,我们就可以使用gdb命令进行代码调试了。

1、可以 2、Qt Creator只是一个集成开发工具,这个版本随意,网上下就可以,Qte不是用最新,而是最好用跟你在Linux开台开发一样的。首先要在Linux下交叉编译Qte的库,然后再将Lib这些文件移植在板子上,最后通过交叉编译好的库去编译你在pc


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8549652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存