打算使用的方法是产生core文件,然后根据core文件定位问题.
生成core文件
发生段错误默认是不生成core文件的,要想生成core文件需要使用ulimit命令取消限制.
在上位机上使用man ulimit
查看用法.
#查看当前的ulimit值
ulimit -a
core file size (blocks) (-c) 0
data seg size (kb) (-d) unlimited
scheduling priority (-e) 0
file size (blocks) (-f) unlimited
pending signals (-i) 1917
max locked memory (kb) (-l) 64
max memory size (kb) (-m) unlimited
open files (-n) 1024
POSIX message queues (bytes) (-q) 819200
real-time priority (-r) 0
stack size (kb) (-s) 8192
cpu time (seconds) (-t) unlimited
max user processes (-u) 1917
virtual memory (kb) (-v) unlimited
file locks (-x) unlimited
可以看到core file size (blocks) (-c) 0
, 不能生成core文件.
#开启生成core文件
ulimit -c unlimited
./app
Segmentation fault (core dumped)
在上位机上进行调试
aarch64-himix210-linux-gdb IRFusionBoard core
或者
aarch64-himix210-linux-gdb IRFusionBoard
core-file core
然后使用where
命令查看出现问题的位置