# 将所有栈信息保存到文件中
# 进入GDB中后,依次执行下面步骤:
# 1、
set logging file planning.log
# 2、
set logging on
# 3、
thread apply all bt
# 4、
set logging off
# 5、如果从core文件中无法知道其对应的二进制文件是哪个,可以先执行下面指令查询
file -P elf_phnum=102400 /storage/data/core/core_rtps_disp.705434.test-6152x2.1686125599
# 6、正确获取到coredump是由哪个模块生成的指令
gdb --silent -ex 'set pagination off' -ex q /usr/bin/python /storage/data/core/core_perception_main.3481008.sz-lab-005.1679875148 | grep 'Core was generated by' | awk -F '`' '{print $NF}' | awk -F "'" '{print $1}'
# 7、另外一种格式:
gdb --silent --eval-command='set pagination off' --eval-command=quit --exec=/usr/bin/python --core=/storage/data/core/core_mainboard.2537643.sz-lab-005.1679901875 | grep 'Core was generated by' | awk -F '`' '{print $NF}' | awk -F "'" '{print $1}'
# 8、直接获取到堆栈报错信息:
gdb --silent --eval-command='bt full' --eval-command=quit --batch --exec=/perception_main --core=/storage/data/core/core_perception_main.1048865.sz-lab-005.1680068317
# 9、attach进入到正在运行的进程
# 格式:sudo gdb 可执行程序 对应的进程ID
sudo gdb /perception_main 1275966
# 10、直接获取到指定进程的core信息
sudo gdb --silent --eval-command='bt full' --eval-command=quit --batch --exec=可执行文件 --pid=1275966 > perception_no_exit.txt
gdb --silent -ex "set pagination off" -ex "thread apply all bt" -ex q 可执行程序 core文件
# 11、apollo中调试planning模块的命令
# gdb 调试planning规划模块core文件的指令:
gdb mainboard -d modules/planning/dag/planning.dag /storage/data/core/core_processor.136668.sz-lab-005.1670427164
# 或者
gdb -c /storage/data/core/core_shm_disp.3217773.sz-lab-005.1682064246 --args mainboard -d modules/planning/dag/planning.dag
# 或者
gdb ./bazel-bin/modules/planning/libplanning_component.so /storage/data/core/core_processor.136668.sz-lab-005.1670427164