码迷,mamicode.com
首页 > 数据库 > 详细

GDB调试

时间:2019-11-17 19:27:52      阅读:125      评论:0      收藏:0      [点我收藏+]

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

  • 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GDB调试

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

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!