之前 运行 ok 时 QApplication 构造函数中的永久 sigabrt
permanent sigabrt at QApplication constructor when previously run ok
我在 main()
开始时收到 sigabrt,当我打电话时:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);//here
...
这是回溯
>~"#0 0x00007ffff1293cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56\n"
>~"#1 0x00007ffff12970d8 in __GI_abort () at abort.c:89\n"
>~"#2 0x00007ffff213a0be in QMessageLogger::fatal(char const*, ...) const () from /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5\n"
>~"#3 0x00007fffe78f7956 in QXcbConnection::QXcbConnection(QXcbNativeInterface*, bool, unsigned int, char const*) () from /opt/Qt/5.5/gcc_64/lib/libQt5XcbQpa.so.5\n"
>~"#4 0x00007fffe78fb066 in QXcbIntegration::QXcbIntegration(QStringList const&, int&, char**) () from /opt/Qt/5.5/gcc_64/lib/libQt5XcbQpa.so.5\n"
>~"#5 0x00007fffe7c0e39b in ?? () from /opt/Qt/5.5/gcc_64/plugins/platforms/libqxcb.so\n"
>~"#6 0x00007ffff2e5f762 in QPlatformIntegrationFactory::create(QString const&, QStringList const&, int&, char**, QString const&) () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n"
>~"#7 0x00007ffff2e6a9a8 in QGuiApplicationPrivate::createPlatformIntegration() () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n"
>~"#8 0x00007ffff2e6b75d in QGuiApplicationPrivate::createEventDispatcher() () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n"
>~"#9 0x00007ffff233da36 in QCoreApplication::init() () from /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5\n"
>~"#10 0x00007ffff233da96 in QCoreApplication::QCoreApplication(QCoreApplicationPrivate&) () from /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5\n"
>~"#11 0x00007ffff2e6d9a9 in QGuiApplication::QGuiApplication(QGuiApplicationPrivate&) () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n"
>~"#12 0x00007ffff5ca392d in QApplication::QApplication(int&, char**, int) () from /opt/Qt/5.5/gcc_64/lib/libQt5Widgets.so.5\n"
>~"#13 0x0000000000435889 in main (argc=1, argv=0x7fffffffec48) at ..../gui/main.cpp:14\n"
之前代码工作正常(几分钟前),我检查了库的 md5 并与另一台 PC 进行了比较(具有相同的库,运行ning 应用程序正常)- 没有发现差异。
我找到了一些 bug,但不确定它是否已连接。
我创建了新的 Qt 项目及其 运行 正常 - main()
看起来一样(不同的包含,库依赖性)。
有什么想法我接下来要尝试什么吗?
更新:
我发誓我没有改变任何东西,我检查了 git diff - 空。这个提交我已经使用了很长时间 - 运行 好几天了。
这是它显示的消息:
QXcbConnection: Could not connect to display
另外 - 当我从终端 ./app 运行 运行 正常时,
当来自 gdb 的 运行 其 运行ning 很好..
但不能 运行 来自 QtCreator-gdb 或只是没有来自 QtCreator(Ctrl+R) 的 gdb..
现在它在另一台计算机上犯了同样的错误 - 新安装的 Qt 5.5,新构建的,还新构建了另一个库..
然后我删除了整个影子目录并重建,错误消失了..很奇怪。
我做了同样的 rm -rf shadow-dir/*
和 运行 qmake 并在我原来的计算机上构建 - 同样的错误。
消息QXcbConnection: Could not connect to display
表示应用程序无法连接到X Display。在这种情况下,它尝试连接的显示器名称为空(名称应跟在消息后面)。
显示名称可以通过环境变量 DISPLAY
传递给应用程序,也可以通过应用程序命令行参数 -display ' '
:
覆盖
./app-binary -display ' '
检查 shell 中正确的 DISPLAY
值:
echo $DISPLAY
在 Qt Creator QApplication app(argc, argv);
之前的 运行 时间内通过打印检查应用程序中该变量的值:
qDebug() << qgetenv("DISPLAY");
// or
qDebug() << QProcessEnvironment::systemEnvironment().toStringList();
该打印应包含类似 "DISPLAY=:0"
的内容(与 shell 执行期间的值相同)。
Qt creator 项目选项可以覆盖系统环境。
我在 main()
开始时收到 sigabrt,当我打电话时:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);//here
...
这是回溯
>~"#0 0x00007ffff1293cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56\n"
>~"#1 0x00007ffff12970d8 in __GI_abort () at abort.c:89\n"
>~"#2 0x00007ffff213a0be in QMessageLogger::fatal(char const*, ...) const () from /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5\n"
>~"#3 0x00007fffe78f7956 in QXcbConnection::QXcbConnection(QXcbNativeInterface*, bool, unsigned int, char const*) () from /opt/Qt/5.5/gcc_64/lib/libQt5XcbQpa.so.5\n"
>~"#4 0x00007fffe78fb066 in QXcbIntegration::QXcbIntegration(QStringList const&, int&, char**) () from /opt/Qt/5.5/gcc_64/lib/libQt5XcbQpa.so.5\n"
>~"#5 0x00007fffe7c0e39b in ?? () from /opt/Qt/5.5/gcc_64/plugins/platforms/libqxcb.so\n"
>~"#6 0x00007ffff2e5f762 in QPlatformIntegrationFactory::create(QString const&, QStringList const&, int&, char**, QString const&) () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n"
>~"#7 0x00007ffff2e6a9a8 in QGuiApplicationPrivate::createPlatformIntegration() () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n"
>~"#8 0x00007ffff2e6b75d in QGuiApplicationPrivate::createEventDispatcher() () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n"
>~"#9 0x00007ffff233da36 in QCoreApplication::init() () from /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5\n"
>~"#10 0x00007ffff233da96 in QCoreApplication::QCoreApplication(QCoreApplicationPrivate&) () from /opt/Qt/5.5/gcc_64/lib/libQt5Core.so.5\n"
>~"#11 0x00007ffff2e6d9a9 in QGuiApplication::QGuiApplication(QGuiApplicationPrivate&) () from /opt/Qt/5.5/gcc_64/lib/libQt5Gui.so.5\n"
>~"#12 0x00007ffff5ca392d in QApplication::QApplication(int&, char**, int) () from /opt/Qt/5.5/gcc_64/lib/libQt5Widgets.so.5\n"
>~"#13 0x0000000000435889 in main (argc=1, argv=0x7fffffffec48) at ..../gui/main.cpp:14\n"
之前代码工作正常(几分钟前),我检查了库的 md5 并与另一台 PC 进行了比较(具有相同的库,运行ning 应用程序正常)- 没有发现差异。
我找到了一些 bug,但不确定它是否已连接。
我创建了新的 Qt 项目及其 运行 正常 - main()
看起来一样(不同的包含,库依赖性)。
有什么想法我接下来要尝试什么吗?
更新:
我发誓我没有改变任何东西,我检查了 git diff - 空。这个提交我已经使用了很长时间 - 运行 好几天了。
这是它显示的消息:
QXcbConnection: Could not connect to display
另外 - 当我从终端 ./app 运行 运行 正常时, 当来自 gdb 的 运行 其 运行ning 很好..
但不能 运行 来自 QtCreator-gdb 或只是没有来自 QtCreator(Ctrl+R) 的 gdb..
现在它在另一台计算机上犯了同样的错误 - 新安装的 Qt 5.5,新构建的,还新构建了另一个库.. 然后我删除了整个影子目录并重建,错误消失了..很奇怪。
我做了同样的 rm -rf shadow-dir/*
和 运行 qmake 并在我原来的计算机上构建 - 同样的错误。
消息QXcbConnection: Could not connect to display
表示应用程序无法连接到X Display。在这种情况下,它尝试连接的显示器名称为空(名称应跟在消息后面)。
显示名称可以通过环境变量 DISPLAY
传递给应用程序,也可以通过应用程序命令行参数 -display ' '
:
./app-binary -display ' '
检查 shell 中正确的 DISPLAY
值:
echo $DISPLAY
在 Qt Creator QApplication app(argc, argv);
之前的 运行 时间内通过打印检查应用程序中该变量的值:
qDebug() << qgetenv("DISPLAY");
// or
qDebug() << QProcessEnvironment::systemEnvironment().toStringList();
该打印应包含类似 "DISPLAY=:0"
的内容(与 shell 执行期间的值相同)。
Qt creator 项目选项可以覆盖系统环境。