如何解决为什么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 举报,一经查实,本站将立刻删除。