高博slambook2-ch3-段错误核心已转储(已解决)

不想看我啰嗦的,可以直接看第3节总结

1、问题现象:

报错文件1:
~/ch3/build/visualizeGeometry
在这里插入图片描述
在这里插入图片描述
报错文件2:
~/paper/slambook2-master/ch3/build/examples/plotTrajectory
在这里插入图片描述在这里插入图片描述不止这俩个文件,还有别的

2、我的解决办法

并不一定通用,是偶尔发现的
思路:首先查段错误核心已转储什么意思发现段错误一般是C++内存访问方面的出错,核心已转储是linux一个工具ulimit提供的一个功能,在你所执行程序的内存操作存在危险时,ulimit会生成一个core文件来辅助用gdb对程序进行调试。
事实:我并没找到生成的core文件,于是我按照这个帖子的方法,在我的终端执行了以下命令

sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"

结果:很快啊,突然的程序就能执行了。
程序执行效果:在这里插入图片描述
在这里插入图片描述

3、操作总结

只需要在终端执行以下操作
首先

#看有没有装这个玩意儿
ulimit	-a
#系统返回如下
real-time non-blocking time  (microseconds, -R) unlimited
core file size              (blocks, -c) 0
data seg size               (kbytes, -d) unlimited
scheduling priority                 (-e) 0
file size                   (blocks, -f) unlimited
pending signals                     (-i) 78687
max locked memory           (kbytes, -l) 2527708
max memory size             (kbytes, -m) unlimited
open files                          (-n) 1024
pipe size                (512 bytes, -p) 8
POSIX message queues         (bytes, -q) 819200
real-time priority                  (-r) 0
stack size                  (kbytes, -s) 8192
cpu time                   (seconds, -t) unlimited
max user processes                  (-u) 78687
virtual memory              (kbytes, -v) unlimited
file locks                          (-x) unlimited

然后

#设置core文件大小,以便生成core文件
ulimit	-c 1024
#这个时候执行会报错的可执行文件,例如visualizeGeometry
./visualizeGeometry
#再
ls

看看可执行文件的当前目录有没有出现core文件,如果没有出现core文件就继续以下操作,否则就到此结束

ulimit -c unlimited
#如果终端显示下面这行就再继续下一步,否则到此结束
bash: ulimit: core file size: 无法修改限制:不允许的操作
sudo ulimit -c unlimited
#如果终端显示下面这行就再继续下一步,否则到此结束
sudo: ulimit:找不到命令
#执行完这一步后,即使运行可执行文件后没有出现core文件,也一样可以解决我的问题了
sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值