SDX12 上层应用gdb调试及环境搭建

1. 问题背景

上层应用在问题定位的过程中,现有手段只能有有限的log打印,通常情况下很难定位问题。如果想在应用程序执行的过程中查看任意调用关系或者数据就必须重新编译代码,这样调试费时费力。使用gdb调试可以高效的对应用进行分析,并且能实时的改变应用程序的执行路径,强大的调试功能能够让我们更好的去分析问题。

2 环境搭建

  1. 使用高通的交叉编译工具链编译、生成GDB工具将GDB工具导入到高通平台模块中
  2. 执行客户的应用程序,并生成core dump文件
  3. 将源代码push到手机中
  4. 使用GDB工具进行调试

注意:当前X12项目没有添加gdb,为了调试方便gdb的编译我们将在x55项目中进行生成。添加gdb请参考x55配置或者根据以下链接Preparing Yocto Development Environment for Debugging适配。

3 操作步骤

  1. 生成模块端可用的GDB工具
  • 进入如下目录
    sdx12-le-1-0/apps_proc/poky
  • 执行以下命令:
source build/conf/set_bb_env.sh
bitbake –c cleanall gdb
bitbake gdb
  1. 生成后的路径如下,执行bitbake -e gdb | grep ^S=
    在这里插入图片描述
  2. 执行readelf -a gdb | grep NEEDED查看文件所需要的动态库:
    在这里插入图片描述
  3. 准备必要的动态链接库
    需要的lib库在bitbake -e gdb | grep ^S=编译目录里面查找,经过测试,只需要准备以下两个动态库就可以了,其他的x12已经在文件系统中存在:
    在这里插入图片描述

4. 调试过程

  1. 配置$YOCTO_BUILD/conf/local.conf,生成带调试符号的可执行文件
    在这里插入图片描述
    以上配置用于添加gdb或者调试功能在镜像编译中:
# Specifies to build packages with debugging information
DEBUG_BUILD = "1"
# Do not remove debug symbols
INHIBIT_PACKAGE_STRIP = "1"
# OPTIONAL: Do not split debug symbols in a separate file
INHIBIT_PACKAGE_DEBUG_SPLIT= "1"
BBDEBUG = "yes"
INHERIT += "buildhistory"BUILDHISTORY_COMMIT = "1"

注意:添加调试符号的配置请不要用于生成gdb,否则gdb也会包含调试符号,会使gdb有70M左右,x12分区可用一般60M

  1. 编译生成带调试符号的可执行文件
    bitbake -c compile $PACKAGE_NAME 编译需要debug的文件,从编译目录生成的Makefile可以看到编译参数已经变化,如下图:
    在这里插入图片描述

  2. 如果需要debug系统生成异常app对应的core dump文件,请按照以下步骤

  • adb shell 进入模块侧执行如下
    在这里插入图片描述
  • 生成core dump文件
    在这里插入图片描述
  1. 拷贝GDB所需要的库文件
    通过adb shell 进入模块,查看lib目录下是否包含所有上面GDB所需要的所有库文件,没有的需要拷贝到模块中
    在这里插入图片描述
    注意:拷贝时,要拷贝在编译GDB时生成的最终的库文件,而不是软链接;拷贝后,文件名要与GDB所需库文件名一致
  2. 将需要debug的源代码push到模块中
    如下图,带调试符号的二进制文件加载后就会显示reading symbols done,然后dir $source_path添加源码位置,再执行gdb即可
    在这里插入图片描述

5 实现效果

在这里插入图片描述

6 附录

已经交叉编译好的gdb

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四儿家的小祖宗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值