问题描述
我目前在调试通过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 (将#修改为@)