zoukankan      html  css  js  c++  java
  • 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
    ");
            return 0;
        }
        printf("Hello World %s!
    ",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

  • 相关阅读:
    补习系列(19)-springboot JPA + PostGreSQL
    【跟唐老师学习云网络】-第8篇 iptables
    【跟唐老师学习云网络】
    物联网与人工智能之间的区别与联系
    NB-IoT将成为未来5G物联网主流技术
    Python自带又好用的代码调试工具Pdb学习笔记
    Vue源码中compiler部分逻辑梳理(内有彩蛋)
    全新一代云服务器S6,重新定义性价比
    [HAOI2012]音量调节
    [SCOI2005]扫雷
  • 原文地址:https://www.cnblogs.com/y4247464/p/11868121.html
Copyright © 2011-2022 走看看