flyfish
程序在运行过程中发生Segmentation fault (core dumped)错误的处理
环境PC:Ubuntu 18.04
嵌入式:Linux
PC交叉编译之后然后将可执行程序拷贝到嵌入式中运行
假如PC可执行程序所在目录
/home/SDK/buildroot/output/type/build/myprogram
嵌入式系统 查看是否支持产生core
命令
ulimit -a
结果
-c: core file size (blocks) 0
设置支持core文件的产生
命令
ulimit -c unlimited
结果
-c: core file size (blocks) unlimited
生成的core文件如下
core-数字-可执行程序名
假定拷贝的路径是 /home/SDK/buildroot/output/type/build/core
3 在PC中进入gdb环境运行命令是
gdb [exec file] [core file]
从终端进入目录
假如我们想使用arm-linux-gnueabihf-gdb进行调试
arm-linux-gnueabihf-gdb所在目录是
/home/SDK/prebuilts/gcc/linux-x86/arm/gcc-arm-version-arm-linux-gnueabihf/bin
执行
./arm-linux-gnueabihf-gdb /home/SDK/buildroot/output/type/build/myprogram /home/SDK/buildroot/output/type/build/core
这是就进入gdb环境了
4 在PC中加载so文件通过info sharedlibrary 命令可以查看需要加载的so文件
需要设置两个目录 set sysroot 和 set solib-search-path
执行两个命令
命令1
set sysroot /home/SDK/buildroot/output/type/host/arm-buildroot-linux-gnueabihf/sysroot
命令2
set solib-search-path- /home/SDK/buildroot/output/type/oem/usr/lib5 在PC中定位错误
命令
bt
结果会输出代码错误的地方



