GDB调试

时间:2019-11-17
本文章向大家介绍GDB调试,主要包括GDB调试使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  • GDB介绍
  • 使用GDB
  • 调试命令

GDB介绍

  GUN Procject debugger

  支持 汇编、C、C++、GO等语言

  使用printf调试代码,及其低效耗时,尤其对于工程代码。GDB调试是Linux平台上最为强大的调试工具。

使用GDB

  对于C程序来说,需要在编译时加上-g参数,保留调试信息,否则不能使用GDB进行调试,会出现 no debugging symbols found的信息。

  Reading symbols from helloWorld...done.表明可调试。


GDB启动调试未运行的程序
  1)调试启动无参程序  

$ gdb hello
..................
(gdb)run

  直接输入run

  2)调试带参程序

  run + 参数

#include<stdio.h>
int main(int argc,char *argv[])
{
    if(1 >= argc)
    {
        printf("usage:hello name\n");
        return 0;
    }
    printf("Hello World %s!\n",argv[1]);
    return 0 ;
}

  编译:

gcc -g -o hello hello.c

  启动调试并设置参数

   3)调试core文件

   当程序core dump时,可能会产生core文件,调试core文件能很快定位问题

 $ gdb  程序文件名  core文件名

GDB启动调试运行的程序

 先找到进程ID    

$ ps -ef|grep 进程名   或者    $ pidof 进程名

  调试

gdb  -p  进程ID    或者  attach 进程ID

单步启动运行 start命令

 gdb -tui  文件名   图形界面调试

设置断点

为何要设置断点?

设置断点后,程序运行到断点位置就会暂停,就可以对程序进行更多的操作,比如查看变量内容,堆栈情况等等,以助调试程序

设置程序断点

  b  行号

  b  文件名:行号

  b  函数名

查看已设置的断点

  info break

删除断点

  delete 1

禁用或启动断点

有些断点暂时不想使用,但又不想删除,可以暂时禁用或启用。例如:

disable  #禁用所有断点
disable bnum #禁用标号为bnum的断点
enable  #启用所有断点
enable bnum #启用标号为bnum的断点
enable delete bnum  #启动标号为bnum的断点,并且在此之后删除该断点

GDB调试--华清直播 

https://www.makeru.com.cn/live/4034_2111.html

GDB调试入门指南

 https://zhuanlan.zhihu.com/p/74897601

原文地址:https://www.cnblogs.com/y4247464/p/11868121.html