使用 GDB 远程调试器时,Linux 系统调用永远不会返回



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

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

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

在 QT 创建器中,我在启动应用程序之前将 GDB 命令"设置远程系统调用允许 1"添加到 QT 创建器运行的其他调试器命令中。没有成功,仍然悬而未决。所有系统调用挂起且永远不会返回。

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

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

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

在我的情况下,与另一篇文章相同,分叉分离设置为关闭。

解决方案是

在 QTCreator 中添加"设置分叉分离"作为调试器选项的一部分(工具->选项....,调试器:GDB 选项卡:其他启动命令)。

最新更新