gdb调试讲解,快速入门

来源:互联网 发布:菲尔杰克逊数据 编辑:程序博客网 时间:2024/05/22 15:22

使用gdb步骤


 

启动程序的方法

  1. gdb + 运行程序(一般在当前目录下,如果不是,要指定路径)
  2. gdb + 运行程序 + core文件。通过这个方法可以加载异常出错时的堆栈信息
  3. gdb + 运行程序 + 进程ID。通过这种方法可以对你正在运行的程序进行调试。

如:

$ gdb cppapplication_2.exe

 

设置运行时参数,有两种方法

  1. 在gdb + 运行程序 + 运行参数
  2. 启动了gdb后,运行set args + 运行参数

设置断点,方法

  1. b(break) + 文件名:行数
  2. b + 文件名:函数 (类内部的函数不能用这种方法)
  3. b + 类::函数

如:

(gdb) b main.cpp:foo
Breakpoint 1 at 0x401392: file main.cpp, line 16.
(gdb) b main.cpp:36
Breakpoint 2 at 0x4013b6: file main.cpp, line 36.
(gdb) b A::printA
Breakpoint 3 at 0x401c2a: file main.cpp, line 27.
(gdb) info break
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x00401392 in foo(int) at main.cpp:16
2       breakpoint     keep y   0x004013b6 in main(int, char**) at main.cpp:36
3       breakpoint     keep y   0x00401c2a in A::printA() at main.cpp:27
(gdb)


gdb调试常用参数

  1. r(run)            :    开始运行程序;
  2. c(continue)  :    继续运行一直到断点停止
  3. b(break)       :   设置程序断点;
  4. p(print)         :    打印出变量值;如 p var,会把var变量的值输出
  5. s(step)         :    单步跟踪,会进入函数内部
  6. n(next)         :    单步跟踪,不进入函数
  7. finish           :     跳出函数调试,并打印返回时的信息
  8. u(until)        :     跳出循环体
  9. q(quit)         :     退出gdb
  10. l(list)            :     显示当前行后面的源程序
  11. bt (backtrace)   :     查看堆栈信息
  12. info              :      查看各类gdb信息以及环境信息,比如:info break 可以查看断点信息
  13. clear            :       清除全部已定义的断点
  14. delete         :       删除指点的断点号,后面接断点号.如:

Breakpoint 4 at 0x401c36: file main.cpp, line 28.

(gdb) delete 4
(gdb) info break
No breakpoints or watchpoints.
(gdb)


我下面是我本次使用的例子

#include <stdio.h>using namespace std;void foo(int sum){    printf("sum 2: %d", sum);    return ;}class A{public:    A(){}    ~A(){}   void printA()    {        printf("printf A!!");    }};/* *  */int main(int argc, char** argv) {        int sum = 0;    for (int i= 0; i< 100; ++i)    {        sum += i;    }        printf("sum :%d", sum);    foo(sum);        A test;    test.printA();        return 0;}




原创粉丝点击