本帖最后由 marsz1990 于 2012-11-29 00:32:20 编辑 如图,
程序很简单,就是点击一个按钮的事件处理。
如果直接运行,是没有问题的,但是一debug,就会报这样的错误停止。
void MainWindow::on_pushButton_clicked()
{
ui->pushButton->setText(tr("阿门!"));//例如在这里下断
sd.show();
}
------最佳解决方案--------------------
小心不要让程序运行出错,实在没有办法的,多调试,注意总结,巧设断点。
------其他解决方案--------------------
QtCreator的调试实在是不好用,所以尽量用"qDebug() << "替换,不调试。
------其他解决方案--------------------
我在Linux下也遇到与你相似的问题,的确gdb挂掉也不好解决。所以只能避免了。
------其他解决方案--------------------
这么说这是Qt debug的BUG吗
------其他解决方案--------------------
通过我自己经常使用Qt Debug的经验来说,我感觉这个问题应该是Qt Debug自身的一个问题.
比如说正常情况下,一个大窗口调用小窗口,小窗体指针调用show方法,如果这个小窗口指针是null,那么调用这个show会报错的,说:内存中0xxxxxxxxx地址不能读之类的错误.然后程序大窗口立马全部退出.在debug模式下断点到show之前,按理说show之前一切是正常的,假如单步进入show,那么报错,此时,如果你程序还在debug模式,那么很有可能,不好意思,卡死了,Qt Debug会导致windows系统抛错.因为你操作一个不存在的内存,按照cpu处理异常的机制,应该立马处理中断的,但是你给卡死着,cpu肯定会直接给你把这块干掉.
可能你说这是程序问题啊,Qt Debug没有问题,但是之前我开发java用Eclipse Debug的时候,这个问题就没遇到过,如果java对象为空,java内部会自动处理掉,跑出NULL异常或者错误之类的.反正感觉Qt Debug还是可以调出错误的,但是他自己的保护能力太差了,遇到严重的内存问题,自己都难保了.
------其他解决方案--------------------
请问你是在刷分吗?
------其他解决方案--------------------
creator好像是可以自己使用外部调试工具的.
我一般在X11环境下写代码,所以我一般用gdb或者dbx来调试