Cloud9 IDE:调试 c++ 应用程序

Cloud9 IDE: debug c++ application

本文关键字:c++ 应用程序 调试 IDE Cloud9      更新时间:2023-10-16

尝试在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?所以问题出在GDB服务器和GDB之间的连接上?还是在 IDE 中没有在断点处停止?(我在很多地方设置了断点,包括描述输出之前/之后和主函数的开始/结束)

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

"/usr/bin/g++ -ggdb3

实际上,我将C9用于基于cmake的构建和调试C ++项目。所以它有效,没问题,但需要一些努力来调整构建器和运行者。针对 cmake 中的每个目标手动。它不是那么有用,但可以使用