您的当前位置:首页SDX12 上层应用gdb调试及环境搭建

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

2024-02-27 来源:小侦探旅游网

1. 问题背景

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

2 环境搭建

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

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,生成带调试符号的可执行文件
# 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. 如果需要debug系统生成异常app对应的core dump文件,请按照以下步骤

  • adb shell 进入模块侧执行如下
  • 生成core dump文件
  1. 拷贝GDB所需要的库文件
    通过adb shell 进入模块,查看lib目录下是否包含所有上面GDB所需要的所有库文件,没有的需要拷贝到模块中
  2. 将需要debug的源代码push到模块中
    如下图,带调试符号的二进制文件加载后就会显示reading symbols done,然后dir $source_path添加源码位置,再执行gdb即可

5 实现效果

6 附录

已经交叉编译好的

因篇幅问题不能全部显示,请点此查看更多更全内容