【问题标题】:linux system calls never return when using GDB remote debugger使用 GDB 远程调试器时,linux 系统调用永远不会返回
【发布时间】:2018-07-09 15:41:14
【问题描述】:

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

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

【问题讨论】:

    标签: linux gdb gdbserver imx6


    【解决方案1】:

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

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

    在我的例子中,和其他帖子一样,分离叉被设置为关闭。

    解决办法是

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 2020-11-18
      • 2011-12-27
      相关资源
      最近更新 更多