zoukankan      html  css  js  c++  java
  • gdb调试

    查看本机是否安装了gdb:gdb --version

    如果没有安装可以使用apt-get install gdb安装gdb

    (1)调试一个简单的cpp文件:

    test.cpp文件:

    #include<stdio.h>

    int main()

    {

      int a = 5;

      int b = 6;

      int c = a+b;

      printf("the number is %d ",c);

    }

    要调试这个cpp文件,在用g++编译的时候需要添加一个-g的参数。首先编译这个文件:g++ -g -o test test.cpp,这样打包出来的test文件才可以用gdb调试,如果没有-g参数,打包出来的文件是不能调试的。

    使用gdb调试打包出来的test文件:gdb test

    然后机器会等待你输出命令,输入b 7,表示在第7行设置一个断点,这里你可以设置多个断点。然后输入run,程序会运行到你设置的第一个断点处停下来。这个时候你可以用print命令来打印出你想要查看的变量的值,如print(a),在测试这里会输出5。

    如果要继续运行,可以再次使用run,会运行到下一个断点处停下。使用next,表示代码往下运行一行,如果是调用函数不会进入函数内部。使用step,也是往下运行一行,如果遇到函数调用则进入到函数的内部。

    (2)如果要调试用CMake打包出来的程序,需要要CMakeList.txt文件中添加下面这几条语句:

    SET(CMAKE_BUILD_TYPE "Debug")

    SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb"

    SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

    (3)编译的时候可能包含了很多其他的cpp文件,如果要在gdb调试的时候在其他的文件中加入断点的话,使用这样的格式:b test1.cpp:20(表示将断点加载引用的test1.cpp文件的第20行)

    (4)在调试需要输入参数的程序的时候,先gdb test,然后set args 参数,然后设断点......即可

  • 相关阅读:
    UVA748 Exponentiation 解题报告
    uva465 解题报告
    UVA 10494 If We Were a Child Again 解题报告
    【今日所得】1.29。。。
    题型总结之高精度
    cf 163 div2 c题 YY 思路
    寒假计划
    Facebook Hacker Cup 2013 Qualification Round 解题报告
    戴戒指的含义(以后要结婚的必看)
    男人心疼女人的13种方式
  • 原文地址:https://www.cnblogs.com/maycpou/p/12972746.html
Copyright © 2011-2022 走看看