3

我正在尝试远程调试(使用 gdbserver)在 iMX6 上运行的应用程序。我的设置是 Ubuntu 16.04 LTS,我使用的是 QT Creator 3.5.1(基于 5.5.1 GCC 5.2.1)。

首先要注意的是,如果我删除系统调用,iMX6 应用层的 QT GDB 远程调试器(单步)正在工作。“系统(...)”或“读取(...)”。等等。但是,任何进行系统调用的尝试都会挂起该进程。系统调用永远不会返回。

第二件事要注意的是,当直接从 iMX6 执行(包括系统调用)时,应用程序运行得很好。我什至可以使用 GDB(命令行)来调试应用程序。这里没问题。

在 QT Creator 中,我已将附加 GDB 命令“设置远程系统调用允许 1”添加到 QT Creator 在启动应用程序之前运行的附加调试器命令中。没有成功,仍然挂起。所有系统调用都挂起并且永不返回。

有谁知道这里发生了什么?为什么我的系统调用没有返回。

4

1 回答 1

2

这篇文章让我找到了答案。 QT:使用 QT Creator 远程调试到 ARM 挂起,命令行 GDB 运行正常

为了快速参考,我检查了 QT 创建的日志。选择Windows->查看->调试器日志

就我而言,与其他帖子一样,叉上分离设置为关闭。

解决方案是

在 QTCreator 中添加“set detach-on-fork on”作为调试器选项的一部分(工具->选项....,调试器:GDB 选项卡:附加启动命令)。

于 2018-01-30T17:37:00.233 回答