4

我目前在调试通过 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-base 5.15.1-1
  • GDB:gdb 9.2-1
  • 铿锵++:铿锵10.0.1-1

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

4

0 回答 0