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

时间:2018-01-30 17:00:15

标签: linux gdb gdbserver imx6

我正在尝试远程调试(使用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 Creator中,我添加了额外的GDB命令“set remote system-call-allowed 1”到QT creator在启动应用程序之前运行的其他调试器命令。没有成功,仍然挂起。所有系统调用都挂起,永不返回。

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

1 个答案:

答案 0 :(得分:1)

这篇文章让我得出答案。 QT: Remote debugging to ARM using QT Creator hangs, command line GDB runs fine

为了快速参考,我检查了QT创建的日志。选择Windows-> View-> Debugger log

在我的情况下,与其他帖子相同,分离在分叉上。

解决方案是

在'上添加'设置分离。在QTCreator中作为Debugger选项的一部分(Tools-> Options ....,Debugger:GDB tab:Additional startup commands)。