目录

Debug Tracker Core dump on C4C

目录

记录如何在 C4C 系统(交叉编译)环境下调试定位 Tracker 程序的 core dump 原因。

方法

  1. 通过 .mudp 文件确定算法释放版本,如交付客户、打包日期等
  2. 在释放服务器(aptiv.val.yirami.xyz)查询释放日志,如 auto_release.of_weiqiao_1v2srr_eu.20260708_164329.log
  3. 打开上述日志文件,定位释放节点和释放环境,如 [AUTO_RELEASE] mode=? service=weiqiao_1v2srr_eu custom_id=? ref=08796284f0dadff9f096bbab9d26a3b97abed15f
  4. 切换代码到该释放节点
  5. 进入释放环境
    docker-compose -f ci/docker-compose.auto.yml run --rm -t weiqiao_1v2srr_eu bash
    
    source /opt/c4c/wr-init-build-env
  6. 外部拷贝 tracker 及 .zz 扩展名的 core dump 文件到目录
  7. 查看调用栈
    gdb
    
    # loading files
    file tracker
    vxcore-file tracker.core.zz
    
    # 查看当前线程的函数调用栈
    bt  # or backtrace
    
    # 查看栈帧信息
    f  # or frame 查看当前帧
    f <N>  # 查看指定帧编号的栈帧
    f <function name>  # 查看指定函数对应的栈帧
    f <address>  # 查看指定内存地址对应的栈帧
    
    # 快捷切换帧
    up  # 切到上一层栈帧
    down  #     切到下一层栈帧
    
    # 查看当前帧的入参及局部变量
    info args  # fus_trk = 0x25e5b0 <object_fusion_wrapper::fus_trks+43472> 其中 43472 为从数组首地址偏移的字节数
    info locals
    
    p <vars>  # 查看指定变量的值