gdb的概念与常用指令,使用gdb调试指令程序

1.在Linux下的警告和错误,当程序出现bug时,linux终端会给大家两种不同的信息

        警告(warning):有时的警告是不影响可执行程序的产生

        错误(error):错误如果不改正是不能生成可执行文件的

g++编译器比gcc编译器更加严格,警告可以被忽略,继续产生可执行程序,但是错误必须更改后才能产生可执行文件

2.什么是GDB:https://sourceware.org/gdb/

        GDB:GNU项目调试器,允许查看一个程序执行时“内部发生了什么”

3.GDB是干啥的

主要干四件事:

  • 启动程序,指定可能影响其行为的任何内容。
  • 使程序在指定条件下停止。
  • 检查程序停止时发生了什么。
  • 更改程序中的内容,以便进行试验 纠正一个 bug 的影响,然后继续了解另一个 bug。

4.GDB如何使用

        1)准备C++程序

        2)编译程序,编译选项中需要加上-g

                g++ -g ***.cpp -o **(如果不加-o会生成一个a.out可执行文件)(g++ -g 02demo.cpp)

        3)启动gdb调试

                gdb ./***(gdb ./a.out)

        4)gdb常用指令:

                quit(q):表示退出gdb指令

                run(r):表示执行可执行程序,如果没有设置断点,则将整个程序从头到尾执行一遍

                list(l):展示可执行程序的相关信息,默认展示10行

                        如果想展示指定行,或者指定函数。l 8,10(展示8-10行)。。l main(展示main周围)

        break(b):设置断点。

                b+行号:表示在某行设置断点,当调试器运行到断点所在的位置后,会暂停于此

                b+函数名:表示在指定的函数处设置断点

        next(n):设置断点后,执行下一条语句

        continue(c):表示从断点处,继续往后执行,直到遇到下一个断点,或者程序结束

        info break:查看断点的相关信息

        delete breakpoint+断点编号:表示删除指定的断点

        step(s):进入断点所在函数内部继续执行

        print(p)+变量名或地址:表示打印指定变量或地址信息

        set variable 变量名=值:表示给某个变量设置相关的值

5)gdb使用小技巧

        shell:后面可以跟终端指令,表示执行终端相关操作

        set logging on:设置开启日志功能,会在当前目录中生成一个gdb.txt文件记录接下来的调试内容

        watchpoint:观察点,如果设置的观察点的值改变,则会将该值的旧值与新值全都展示·        6)gdb调试出错文件

                当一个可执行程序出错时,会产生一个core文件,用于查看相关错误信息

                Linux系统默认是不产生core文件,需要进行相关设置后才能产生

                通过ulimit -a查看所有Linux的限制内容        通过ulimit -c unlimited来设置core文件的个数

查看出错原因

7)gdb调试其他正在运行的进程

        ./可执行程序 & :表示将可执行程序后台运行,不占用当前终端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值