orbslam_addsemantic 段错误解决
gdb core文件调试
参考博客:https://www.javazxz.com/thread-11338-1-1.html
https://blog.csdn.net/weixin_42017587/article/details/102541514
-
更改core文件大小限制为unlimited,运行代码,段错误后可在运行路径下生成core文件
-
gdb调试core文件
-
查看堆栈
定位错误代码,修改
- 定位到
Frame.cc
的1148行:const float d = imDepth.at<float>(v,u);
- 经CLion调试,发现当v和u等于-1时程序会终止运行,报段错误。这是因为前面代码将动态物体上的关键点坐标设为(-1,-1),这里直接根据坐标从深度图获取深度会出问题,应该先判断是否为-1,若是就continue不获取深度。