调试Qt程序时遇到的:底层由于接收到操作系统的信号而停止

调试错误截图:

错误焦点:是在程序中出现了野指针,即使用了已经被释放了的对象的指针。

错误代码如下:

    openGroupBox = new QGroupBox(tr("Open at startup"));
//  webBrowserPage = new QGroupBox(tr("Web browser"));  //!!!!!!!!!!!野指针的源头
    webBrowserCheckBox = new QCheckBox(tr("Web browser"));  //正确代码
    mailEditorCheckBox = new QCheckBox(tr("Mail editor"));
    newsgroupCheckBox = new QCheckBox(tr("Newsgroups"));
    QVBoxLayout *openLayout = new QVBoxLayout;
    openLayout->addWidget(webBrowserCheckBox);  //!!!!!!!!!!!野指针
如上代码可以看出,对于webBrowserCheckBox对象在还没有初始化的情况下就被第二段程序中的布局管理器使用到了,即第二段中所使用到的webBrowserCheckBox所指向的位置是未定义的,即为未知的。

虽然这个错误是由于个人粗心所引起的,但是可以总结得到这类错误提示大部分是由于在程序中使用了野指针所引起的。而当程序代码比较长的时候,野指针是很难被发现的,我这次的纠错是在单步调试中发现的,但是也换了很长的时间。


展开阅读全文

没有更多推荐了,返回首页