Cloud9 IDE:debug C++应用程序

问题描述:

试图在Cloud9在线IDE中运行简单的C++应用程序。 我是远程gdb调试的新手(“远程 - 我不是指真正的远程调试,而是使用客户端/服务器调试,因为我看到实际上是本地调试,但无论如何,我看到使用gdbserver的runner配置和。GDB在同一主机上) 我使用设在社区论坛C++亚军,其中有从默认的C++亚军是建立使用的,而不是直接的g ++编译生成文件的唯一区别就在这里,它是:。Cloud9 IDE:debug 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中没有停止的断点? (我已经在很多地方设置了断点,包括描述输出之前/之后以及主函数的开始/结束处)

+0

由于你的makefile没有显示。应用是否启用了调试符号? – Mutahhir

+0

由cmake生成的makefile与-DCMAKE_Build_Type =调试 – amigo421

+0

你是对的,需要调查由cmake生成的makefile,默认的C++模板工作正常,带有调试跟踪 – amigo421

正如评论中所建议的那样,通过添加gcc标志来添加调试信息到构建,我的意思是

“的/ usr/bin中/ G ++ -ggdb3

其实我是用C9的构建和调试C++基于CMake的项目。 所以它的工作原理,没问题但需要一些努力来调整建设者和跑步者。 针对每个目标在cmake手动。它不是很有用,但可以使用