Cloud9 IDE:调试 c++ 应用程序
Cloud9 IDE: debug c++ application
尝试在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 中的每个目标手动。它不是那么有用,但可以使用
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?