【问题标题】:Cloud9 IDE: debug c++ applicationCloud9 IDE:调试 c++ 应用程序
【发布时间】:2016-04-25 13:44:31
【问题描述】:

尝试在 Cloud9 在线 IDE 中运行简单的 c++ 应用程序。 我是远程 gdb 调试的新手(“远程 - 我不是指真正的远程调试,而是使用客户端/服务器调试,因为我看到实际上是本地调试,但是无论如何,我看到使用 gdbserver 和 gdb 的运行器配置在同一主机上)。 我正在使用社区论坛上提供的 c++ 运行程序,它与使用 makefile 而不是直接 g++ 编译构建的默认 c++ 运行程序的唯一区别。在这里:

{
  "script": [
    "set -e",
    "cd /home/ubuntu/workspace/build",
    "make",
    "chmod 755 \"my_app\"",
    "if [ \"$debug\" == true ]; then ",
      "gdbserver --once :15470 \"my_app\" $args",
    "else",
      "my_app $args",
    "fi"
  ],
  "info": "Running Project",
  "debugport": 15470,
  "debugger": "gdb",
  "executable": "my",
  "maxdepth": 50,
  "$debugDefaultState": false,
  "env": {},
  "selector": "^.*\\.(cpp|cc)$"
}

当我在启用调试的情况下运行它时,我会看到以下输出:

Running Project                                                                                                                                                                                                                                      
....
[100%] Built target my_app                                                                                                                                                                                                                         
Process my_app created; pid = 25969                                                                                                                                                                                                            
Listening on port 15470                                                                                                                                                                                                                              
Remote debugging from host 127.0.0.1                                                                                                                                                                                                                 
My Test Application                                                                                                                                                                                                                                     
        description of my test applciation                                                                                                                                                                                                       
usage:                                                                                                                                                                                                                                               
         my_app [task_name] [task_parameters ...]                                                                                                                                                                                              

Child exited with status 1                                                                                                                                                                                                                           
GDBserver exiting

所以这是应用程序的默认运行,不带参数,仅显示描述。 但是它不会在任何断点处停止。这是一个主要问题,我的问题在这里

从上面的输出中,对我来说,不清楚 - gdb 是否成功连接到 gdbserver? 所以问题出在 gdbserver 和 gdb 之间的连接上? 或者在没有在断点处停止的IDE中? (我在很多地方都设置了断点,包括描述输出之前/之后以及主函数的开始/结束)

【问题讨论】:

  • 因为你的 makefile 没有显示出来。构建的应用是否启用了调试符号?
  • makefile 已由 cmake 使用 -DCMAKE_Build_Type = Debug 生成
  • 你是对的,需要调查makefile,它是由cmake生成的,默认c++模板工作正常,带有调试跟踪
  • 我理解 C9 是否正确 - 有两个配置文件 - 构建器和运行器,所以正确的方法是运行器应该只包含运行命令,而不是 make。 Make/cmake/build/g++/etc 应该在一个构建器文件中。对吗?
  • 你可以使用它,但我认为使用运行器构建然后运行一切也会很好。

标签: c++ debugging gdb cloud9-ide


【解决方案1】:

正如 cmets 中所建议的,通过添加 gcc 标志以将调试信息添加到构建中来解决问题,我的意思是

"/usr/bin/g++ -ggdb3

实际上,我使用 C9 构建和调试基于 cmake 的 c++ 项目。 所以它可以工作,没问题,但需要一些努力来调整建设者和跑步者。 手动针对 cmake 中的每个目标。没那么好用,不过可以用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 2011-11-30
    • 1970-01-01
    • 2017-09-12
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多