gdb命令初步使用

gdb命令使用:使用gdb之前,编译程序g++时需要加-g参数(生成调试符号表)

  1、gdb filename  //调试一个可执行文件

   -->quit(q)退出调试

  2、暂停机制(①断点、②监视点、③捕获点),在这里只说断点。

    break 函数名(b)

    break 行号

    break 路径:行号(demo_11_15/swap.cpp:5)

    break 路径:函数名(demo_11_15/swap.cpp:swap)

    info breakpoints (i b) //查看所有断点

    注意:在不停止gdb的情况下,从新编译代码后,gdb进行run(r)时可以感知代码的变化

    delete 断点号或函数名(在之前可以先用i b查看断点) //删除一个或多个断点

    clear  //清除gdb将执行的下一指令处的断点,可以当delete用,用法相似。

    disable 断点号  //禁用断点

    enable 断点号  //启用断点

    注意:下图type为类型(①断点、②监视点、③捕获点),disp为断点的状态(keep、del、dis),Enb为是否启用。

    

  3、执行程序

    run(r)   //使程序执行起来。或重新执行

    step(s) //单步执行(进入函数)。

     next(n) //单步执行(不进入函数)。

    continue(c) //继续执行直到下一个断点或结束。

    continue n   //在后面的n个断点不停止,停止到n+1断点处(在循环中意为执行n次循环)。

    finsh(fin) //执行完当前函数

    until(u)//执行完当前循环。下图是until的一个特例。until后面也可以跟行号,函数名

    

  4、条件断点

    break main if i > 5 //当执行到循环i>5时停下。

    break main if i == 10 

    cond 1 i == 3 //将正常断点1设置为条件断点,条件为i == 3

    cond 1 //恢复断点1为正常断点

    。。。。复杂的以后再补上。

  5、监视点

    watch i  //当每次i变化时都会断住。

    watch 表达式

  6、变量

    print 变量(p)   //打印出变量值。

    p/x i       //打印i的16进制值 类似还有 p/c i 和p/s i     //打印ascii字符和string

    info locals    //打印当前栈帧中的所有局部变量

    set $i = 0  p w[$i++]       //当w为程序中的数组时,可以让i当做数组的下标。i是gdb设置的一个方便变量(convenience variable)

    p *$i    //打印变量$i的值

    

   

原文地址:https://www.cnblogs.com/Ccluck-tian/p/11867202.html