QT调试时提示Signal name: SIGSEGV - Signal meaning: Segmentation Fault
来源:互联网 发布:小甲鱼windows教程 编辑:程序博客网 时间:2024/06/03 13:42
最初我在运行QT时,点击某个功能的按钮时,界面一下就消失了。我找到这个按钮相关的函数,设置断点,分步调试:
在下面这个程序处显示:Signal name: SIGSEGV - Signal meaning: Segmentation Fault。
谷歌查找之后说是This usually happens when accessing a pointer that was not initialized or was set to 0.
void ProRobotics::MeasurementModel(Mat &delta_z, Point3f obs, Point3f xPred, Mat *Ht, Point2f *estLm){//delta_z用来存储对landmarks的真是观测和预测的差值向量 float dst,theta; //用来存储范数,就是两点之间的距离 Point2f z, zp; //用来存储真实观测值(与后者差值)和预测的观测值 Point2f delta; //用来存储landmarks与预测的机器人位姿的差值向量] if(!estLm)//如果Landmark的估计值是空,则调用者非SLAM {//将estLm指定为Landmark的真实值 estLm = landmarks.at(obs.z); }......
调试到if语句时出现错误了,修改为:estLm = reinterpret_cast<Point2f*>(&(landmarks.at(obs.z)));
运行就成功了。
出现这个原因的地方会很多,但是原因都差不多是访问不存在或者不正确的地方造成的。
下面这个程序是我再一次遇到这种错误的程序。当这里的double是float时有时候也会出现这种错误。
//计算Vt(3*2) at<float>时会出现segfault的错误。 Vt.at<double>(0,0)=(sin(xLast.z+Wd*T)-sin(xLast.z))/Wd; Vt.at<double>(0,1)=Vd*(sin(xLast.z)-sin(xLast.z+Wd*T))/Wd/Wd+Vd*cos(xLast.z+Wd*T)*T/Wd; Vt.at<double>(1,0)=(cos(xLast.z)-cos(xLast.z+Wd*T))/Wd; Vt.at<double>(1,1)=-Vd*(cos(xLast.z)-cos(xLast.z+Wd*T))/Wd/Wd+Vd*sin(xLast.z+Wd*T)*T/Wd; Vt.at<double>(2,0)=0; Vt.at<double>(2,1)=T;
0 0
- QT调试时提示Signal name: SIGSEGV - Signal meaning: Segmentation Fault
- Program received signal SIGSEGV, Segmentation fault.段错误调试
- Program received signal SIGSEGV, Segmentation fault.
- Program received signal SIGSEGV, Segmentation fault.
- Program received signal SIGSEGV, Segmentation fault.
- Program received signal SIGSEGV, Segmentation fault
- program received signal SIGSEGV, Segmentation fault
- 错误总结:C/C++运行时提示".exe已停止工作"? 调试时出现Program received signal SIGSEGV,Segmentation fault?引用无效内存一般是什么错误?
- debug information: Program received signal SIGSEGV,segmentation fault.
- Program received signal SIGSEGV, Segmentation fault.(转)
- 解决Program received signal SIGSEGV, Segmentation fault.的辛酸
- error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)
- error: Program received signal SIGSEGV, Segmentation fault. (Codeblocks, C++)(2)
- Ubuntu+GCC(g++):Program received signal SIGSEGV, Segmentation fault
- #pragma pack引起 stl的map/list在insert时报错:(Suspended : Signal : SIGSEGV:Segmentation fault)
- mingw 编译c++ 最简单的程序出现Program received signal SIGSEGV, Segmentation fault.
- Process returned -1073741571 (0xC00000FD) Program received signal SIGSEGV, Segmentation fault.
- Program received signal SIGSEGV, Segmentation faul;
- linux Printk打印级别
- C++栈内存分配剖析
- ubuntu上安装R —— 65.49.2.178事件我中枪了
- R语言 linux安装
- 数据清洗之数据质量检查
- QT调试时提示Signal name: SIGSEGV - Signal meaning: Segmentation Fault
- EBS Form开发中LOV和Editor介绍
- 海量数据处理分析
- 谷歌眼镜设计规范之时间轴设计
- 设计模式之总结与回顾
- 关于Kettle 转换、作业日志自动配置的解决方案
- 检测大写键
- 软件工程—软件可靠性测试
- 采用加密方式解决混合云安全的挑战