当前位置:Gxlcms > 数据库问题 > GDB调试

GDB调试

时间:2021-07-01 10:21:17 帮助过:19人阅读

  • 使用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

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    GDB调试

    标签:入门   调试运行   std   设置断点   bnu   禁用   ++   gre   attach   

    人气教程排行