NetBeans远程调试Linux c++ 11项目
NetBeans远程调试Linux c++ 11项目
由于好多原因,好久没有写博客了,随着c++ 11的普及率越来越高,开发c++ 项目的人也越来越多,可以说c++ 11 给了c++ 这门语言第二次生命,而且据笔者了解,使用c++ 11 新开发的项目大部分是基于linux的,具体原因不多解释。当然c++圈子里面开发工具百花齐放,有人喜欢使用vi作为主力开发工具,有人用eclipse, 有人用visual studio, 也有人喜欢clion, 抛开个人偏好不谈,我们来谈一下远程调试的支持。 说实话,调试体验最好的个人认为是直接SSH连上去GDB调试,但是这样做有一个问题就是修改代码,和跳转代码不是特别友好,如果需要大量改代码,分析逻辑,同时调试,可能开发体验不是特别好。笔者要介绍的是一种基于NetBeans远程调试Linux c++ 11项目,具体效果如下。其实NetBeans最早是作为Java开发工具而出名的,因此很多人没有太注意他其实也可以开发c++项目,而且对makefile/cmake的支持还比较出众。
示例代码如下:
#include <stdio.h>
#include <stdlib.h> /**
* power - Calculate the power of number.
* @param base: Base value.
* @param exponent: Exponent value.
*
* @return base raised to the power exponent.
*/
double power(double base, int exponent)
{
int result = base;
int i; if (exponent == ) {
return ;
} for(i = ; i < exponent; ++i){
result = result * base;
} return result;
} int main(int argc, char *argv[])
{
while()
{
int a = ;
}
if (argc < ){
printf("Usage: %s base exponent \n", argv[]);
return ;
}
double base = atof(argv[]);
int exponent = atoi(argv[]);
double result = power(base, exponent);
printf("%g ^ %d is %g\n", base, exponent, result);
return ;
}
cmake_minimum_required (VERSION 2.8) set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall") project (Demo1)
add_executable(Demo main.cc)
但是远程调试是需要设置的,而且网上这方面的资料不是特别多,那么我就把重点的部分和大家分享一下,第一个重点的设置是下图的构建结果,这项必须要要填,NetBeans根据这个去找可执行文件,否则会报如下的错误。
第二个问题是NetBeans远程attach到进程的时候会报如下到错误 gdb attach fails with ptrace: Operation not permitted, 解决方案如下:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
总结
本位给出了一种基于NetBeans的linux c++ 11 远程调试方案,NetBeans远程调试对makefile和cmake工程都有比较好的支持,亲测可用。使用NetBeans远程调试的另外一个好处是代码跳转比较方便,再也不用配置mingw/cygwin了,因为我们已经可以在linux文件系统中随意跳转了。
NetBeans远程调试Linux c++ 11项目的更多相关文章
- 本地远程调试Linux 部署的web 项目
1.在linux tomcat 下面的 bin 目录下增加一个远程调试的命令: declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Dj ...
- 在windows通过visual studio远程调试linux mono程序
本文参考文章 https://github.com/techl/MonoRemoteDebugger 1.通过连接https://github.com/techl/MonoRemoteDebugger ...
- Gdb远程调试Linux内核遇到的Bug
知识共享许可协议本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/gdb-bug 本博客同步在http://www.cn ...
- 远程调试 ASP.NET MVC 项目
Visual Studio 支持从一台计算机到另一台设备的远程调试.进行远程调试时,主机可以是任何支持 Visual Studio 的平台.远程设备可以是 x86.x64 或 ARM 平台. 本文将指 ...
- Visual Studio 2015中使用gdb远程调试linux程序
VS的debug功能非常强大,相比而言linux上的图形化调试一直不是很好用. 如果可以使用VS来调试linux程序,应该是一件比较愉快的事情. 这在2015中变得可能,因为从2015开始VS支持An ...
- MAC使用IDA PRO远程调试LINUX程序
1 背景 在学习Linux系统上的一些漏洞知识的时候,往往需要进行“实地测试”,但是在Linux系统上进行调试并不太方便,因为LINUX自带的GDB调试工具真的不太人性化,即使有GDBTUI之类的“伪 ...
- idea远程调试linux下的tomcat
要远程调试代码,首先的保障本地的代码和远程tomcat的代码是同一份 首先在本地idea配置一个远程tomcat服务器 host就填写远程主机ip port填写访问的端口(不是调试端口) 然后在Sta ...
- vs + wsl .net core 远程调试 (linux vsdbg)
https://github.com/OmniSharp/omnisharp-vscode/wiki/Attaching-to-remote-processes https://github.com/ ...
- idea14远程调试linux下的tomcat
进入到idea的tomcat的run/debug配置,新建个remote tomcat,然后填写相关信息,如上图(注意远程调试端口). 再选择Startup/Connection,如下图所示: 到此, ...
随机推荐
- POJ 3280 Cheapest Palindrome (区间DP) 经典
<题目链接> 题目大意: 一个由小写字母组成的字符串,给出字符的种类,以及字符串的长度,再给出添加每个字符和删除每个字符的代价,问你要使这个字符串变成回文串的最小代价. 解题分析: 一道区 ...
- Metasploit学习记录---Nessus安装部署
1.Nessus介绍 nessus是目前世界上最为流行的漏洞扫描器之一.她提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库.Nessus不同于传统的漏洞扫描软件,可同时在本机或远端上遥控,进行系统的 ...
- hwy题目选讲
\[ f(n) = n/5 + f(n/5)\\ g(n) = (n\mod10)! * g(n/5)\mod 5\\ ans = f(n)*inv(2^g(n))\\ \]
- Java 整数型的进制间的互相转换
/** * 整数型, 进制间的互相转换 */ public class IntConversion { public static void main(String[] args) { int num ...
- 在Linux下开发多语言软件(gettext解决方案)
最近的项目出现了一个bug.项目是基于一个已有的成熟开源软件之上做修改的,新写了加解密库,用于为该成熟开源软件增添加解密功能.功能增加完成后效果都很好,可是就是中文出不来了,也就是说没办法自适应多语言 ...
- 【管理篇】用户故事STORY
项目管理中,常常听说story,用户故事 “一开始就做对系统”纯属神话,反之,我们应该去实现今天的用户故事,然后重构,明天再拓展系统.实现新的用户故事.这就是迭代和增量敏捷的精粹所在.
- shell - shift
Shell编程中Shift的用法 位置参数可以用shift命令左移.比如 shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1.$2.$3丢弃,$0不移动.不带参数的shi ...
- nginx,maven
nginx反向代理 负载均衡 keepalive高可用 lvs负载均衡算法 mvn build自定义命令 install安装到本地仓库
- AVL树的Java实现
AVL树:平衡的二叉搜索树,其子树也是AVL树. 以下是我实现AVL树的源码(使用了泛型): import java.util.Comparator; public class AVLTree< ...
- SharePoint使用jsom查询当前用户信息
前置环境:sharepoint 'use strict'; var context = SP.ClientContext.get_current(); var user = context.get_w ...