Linux调试器-gdb使用

1. 背景

        程序的发布方式有两种,debug模式和release模式。
        Linux gcc/g++出来的二进制程序,默认是release模式。
        要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项。

2. 开始使用

        调试是一个帮助我们找到问题出现在哪里的过程,而最终解决问题还是需要程序员。

        如果linux上没有gdb调试工具需要安装。 

sudo yum install -y gdb

        开始调试:直接gdb,我们生成的可执行程序就可以开始调试了。

开始调试后只按 l 的话会出现部分行号,如果想要从头开始的话,需要按 l0

Linux调试器-gdb使用_第1张图片

         然后一直按 enter 就可以显示全部代码了,enter 可以记住上一个我们的指令。

Linux调试器-gdb使用_第2张图片

         ‘r’ 让程序跑起来,需要配合其他的指令来使用。

          在vs下 f9 是打断点 ,在gdb下 b +行号/函数名/文件:行号,就是对该位置打断点。

         查看断点信息 ‘info b’ 

Linux调试器-gdb使用_第3张图片

        使当前断点失去功能但是不删除断点。disable ‘断点号’  注意是断点号,而不是行号。从查看断点信息哪里可以知道断点号。Linux调试器-gdb使用_第4张图片

        删除断点 d ‘断点编号’。

        对比vs下的 ‘ f10 ,f11 ’,gdb则是用 n 和 s 来实现逐过程,和逐语句。

      在函数这里打断点,我们 n 或者 s 便可以实现逐过程和逐语句。

Linux调试器-gdb使用_第5张图片

        那么如何在程序运行状态下查看各个变量的地址内容和地址呢?display 变量名/变量地址。

常显示变量名和变量地址  undisplay ‘编号’ 取消常显示变量地址和内容。

Linux调试器-gdb使用_第6张图片

        主要这个变量生成后才能调用 display !!!!

        c:从一个断点运行到下一个断点(范围查找)。

        finish:将一个函数运行结束,就停下来(范围查找)。

        until:在一个范围内,直接运行到指定行(范围查找)。

        在调试过程中如果想更改变量的内容实现多分支调试怎么办呢?

        首先在调试的语句那里打断点。

        然后 set ‘变量名’ = 我们想要设置的值就好。

Linux调试器-gdb使用_第7张图片

        就能实现不用改代码实现多分支调试。


 

你可能感兴趣的:(linux,linux,运维,服务器)