• 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 == 0) {
            return 1;
        }
        
        for(i = 1; i < exponent; ++i){
            result = result * base;
        }
    
        return result;
    }
    
    int main(int argc, char *argv[])
    {
        while(1)
        {
            int a = 0;
        }
        if (argc < 3){
            printf("Usage: %s base exponent 
    ", argv[0]);
            return 1;
        }
        double base = atof(argv[1]);
        int exponent = atoi(argv[2]);
        double result = power(base, exponent);
        printf("%g ^ %d is %g
    ", base, exponent, result);
        return 0;
    }
    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文件系统中随意跳转了。

  • 相关阅读:
    判断当前时间
    判断页面有没有点击
    js前台与后台数据交互-后台调前台(后台调用、注册客户端脚本)
    js前台与后台数据交互-前台调后台
    关于Cookie
    关于Session
    asp.net中的<%%>的几种形式的用法
    解析客户端脚本、服务器端脚本
    Asp.net--Ajax前后台数据交互
    Asp.Net 前后台交互小结
  • 原文地址:https://www.cnblogs.com/pugang/p/9484685.html
Copyright © 2020-2023  润新知