【发布时间】: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