使用 CLion 进行 GDB 远程调试不起作用

问题描述 投票:0回答:2

这是我的场景:

  • 我可以使用终端使用以下命令进行调试:

    • gdb myprog
    • 破坏 myprog.c:4115
    • 运行--myarg
    • 断点有效,我可以单步执行程序了
  • 我在Fedora系统中尝试使用CLion 16.2.2进行远程调试:

    • 在服务器中我运行: gdbserver localhost:8080 myprog --myarg
    • 我明白了: 处理创建的数据;进程号=80199 监听8080端口
    • 在带有 CLion 的 Linux 客户端中:
    • 设置/部署/配置SFTP(上传和下载工作正常)
    • 从服务器下载所有文件
    • 编辑配置
    • 创建新的 GDB 远程调试:
    • GDB:默认(捆绑)
    • 目标:tcp:193.101.144.128:8080
    • 符号文件:{空白}
    • 系统根目录:{空白}
    • 路径映射:服务器路径和本地路径
    • 运行调试器
    • 在服务器终端上我看到:
    • 从主机 172.24.10.2 进行远程调试(这让我相信我已经很接近了)
    • 地址字符串 = T:服务器名称:4311
    • 在 CLion 控制台中我看到:
    • 调试器已连接到 tcp:193.101.144.128:8080(连接有效!)

虽然 GDB 服务器和客户端的连接似乎正在工作,但我似乎遗漏了一些东西,因为调试器工具(单步进入、单步跳过、继续等)保持灰显状态,并且永远不会到达断点。

从第一次测试中我知道我使用的断点应该有效。

我怀疑我在这一行中传递程序参数(--myarg)的方式: gdbserver localhost:8080 myprog --myarg 它不正确,但我不知道还能在哪里传递它。

我期待能够使用这个很棒的 IDE 而不是使用终端进行调试。我很接近,但被困在这里。我真的很感谢一些帮助!

谢谢你

gdb remote-debugging clion gdbserver
2个回答
5
投票

我遇到了同样的问题。就我而言,问题的根本原因是目标设备上项目文件夹的绝对路径与本地计算机上的绝对路径不同。 在“运行/调试配置”对话框中添加正确的路径映射后,调试器开始工作。
例如:
路径映射:
服务器路径:/home/ubuntu/src/yourprojectname/
本地路径:/home/michael/Documents/src/yourprojectname/


0
投票

如果您的可执行文件不是在同一台计算机上构建的,则经常会发生这种情况。

断点全部呈灰色,因为调试符号中的源路径与本地计算机(您从中启动远程调试会话)上源文件的实际位置不匹配。

您需要将构建环境的项目目录映射到本地计算机上的项目目录。

remote debug

这基本上执行了

set substitute-path
gdb 命令。 一旦源路径被修复,远程调试会话应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.