我正在编写简单的 pomodoro 应用程序,它基本上是倒数计时器。现在,我有倒计时工作,但奇怪的是,当我向我的类添加另一个属性(任意)时,我得到 Sedmentation fault 错误。
使用gdb,问题应该在这里:
void Status::showPomodoroTime() {
QTime time = pomodoroTime->addSecs(elapsed);
activeTime->display(time.toString("mm:ss"));
}
其中activeTime是QLCDNumber小部件,经过时是int。
更多背景信息:
void Status::createDefaultIntervals()
{
pomodoroInterval = new QTime(0, 25);
pomodoroBreak = new QTime(0, 5);
pomodoroLongBreak = new QTime(0, 15);
}
void Status::run()
{
if (pomodoroActive == STOP) {
pomodoroTime = pomodoroInterval;
showPomodoroTime();
}
pomodoroActive = RUN;
updateStatusArea();
timerTick();
}
CreateDefaultInterval肯定在showPomodoroTime之前运行。
让我觉得错误,整个应用程序运行正常。就在我添加另一个属性时,它开始抛出sedfault。
* .h文件中的变量声明如何导致* .cpp中的段错误?
如果你想要更多代码,我可以把它放在任何地方。我只是不知道,什么地方足够持久。不想在这里发布(约300行代码)。
答案 0 :(得分:1)
检查是否(pomodoro!= NULL)然后执行addSecs()。
答案 1 :(得分:0)
pomodoroTime可能未初始化或已删除