为什么QProcessQt 5.15.1和GDB导致符号丢失?

问题描述

我目前在调试通过QProcess启动进程的程序时遇到一些麻烦。 只需简单地执行不带dbg的二进制文件就可以了,但是当我尝试使用gdb调试可执行文件时,启动该进程后会得到SIGTRAP。 之后,堆栈始终显示“ ??”而不是函数名称。 当继续时,我得到一个SIGILL。 我发现没有设置断点时就不会造成陷阱。

在我的项目中,我还会得到以下输出:

Probes-based dynamic linker interface failed.

我不确定这是否与加载的插件或库有关。

可以使用以下代码重现该问题(“基于探针的动态链接器接口失败。”输出除外)

#include <QCoreApplication>

#include <QProcess>
#include <QDebug>

int main(int argc,char *argv[])
{
    QCoreApplication a(argc,argv);

    QProcess proc;
    QString exe = "echo";
    QStringList arguments;
    arguments << "Test";

    proc.start(exe,arguments);
    if (!proc.waitForFinished()) {
        qDebug() << "failed to start" << proc.exitCode() << proc.errorString();
    }

    qDebug() << "process finished";
    qDebug() << proc.readAllStandardOutput();

    return a.exec();
}

我的操作系统是Arch Linux(最新)

  • Qt5:基于qt5的5.15.1-1
  • GDB:gdb 9.2-1
  • clang ++:clang 10.0.1-1

有人知道用dbg调试时是什么导致SIGTRAP吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...