Linux下gdb调试之打断点的实现方法

 更新时间:2023年09月04日 08:34:31   作者:凌肖战  
这篇文章主要介绍了Linux下gdb调试之打断点的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Linux下gdb调试之打断点的方法

gdb 调试时,常常需要在程序某处打断点。打断点的命令是 b ( break 的缩写) 命令。

下面分别介绍几种打断点的方式。

下面的几种打断点的方式,用一段简单的代码来操作一下。代码如下:

debug.c 文件代码如下:

#include <stdio.h>
#include "debug.h"
int fun1(int a)
{
   printf("***fun1()\n");
   return (a+1);
}
int fun2(int b)
{
    int c = 0;
    printf("***fun2()\n");
    c = 2 * fun1(b);
    return c;
}

main.c文件代码如下:

#include <stdio.h>
#include "debug.h"
int main(void)
{
   int data1 = 1;
   int ret = 0;
   ret = fun2(data1);
   printf("***main(): ret: %d\n", ret);
   return 0;
}

一. 在某个源文件中打断点

1. 在源文件的的函数入口处打断点

进入 gdb 调试后,如果需要程序停在某个函数入口处,则可通过在该函数入口处打断点的方式实现。

命令为 :b  文件名:函数名     (例如,b debug.c: fun1 )

如下,如果想在 debug.c 文件的 fun1() 函数入口处打断点,则如下操作:

可以看到,程序 运行后,停在了 fun1() 函数入口处。

2. 在源文件的某一行打断点

有时需要程序停在源文件的某一行,则这时可以在这一行打断点。

命令如下  (其中 num 为代码的行号) : b  源文件名:num

如果想在 debug.c 文件的第 13 行停下来,则可以如下图操作:

可以看出,程序运行后,停在了debug.c文件的第 13 行。

二. 在程序的某个地址处打断点

有时候需要在程序的某个地址处打断点。

在程序地址处打断点的命令为(其中 address 为程序的地址):b *address 

如下操作:

三. 设置条件断点

也可以设置条件断点,也就是只有在条件满足时,断点才会被触发,命令为(其中 num 为行数,cond 为条件):

break num...if cond

如下所示,设置了条件断点。

此外,还可以设置临时断点,临时断点即断点只生效一次。

设置临时断点命令为 tbreak 命令,使用方法与以上 break 命令相同。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux用户和组管理常见命令总结

    linux用户和组管理常见命令总结

    这篇文章主要介绍了linux用户和组管理常见命令,总结整理了linux用户和组管理相关原理、操作命令与使用注意事项,需要的朋友可以参考下
    2020-03-03
  • .htaccess教程之.httacces文件介绍与创建

    .htaccess教程之.httacces文件介绍与创建

    从本指南中,你将可以学习到有关.htaccess文件及其功能的知识,并用以优化你的网站。尽管.htaccess只是一个文件,但它可以更改服务器的设置,允许你做许多不同的事情,最流行的功能是您可以创建自定义的“404 error”页面。.
    2008-06-06
  • Vscode远程连接Ubuntu出错问题的解决方法

    Vscode远程连接Ubuntu出错问题的解决方法

    这篇文章主要给大家介绍了关于Vscode远程连接Ubuntu出错问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • APACHE 多站点配置方法

    APACHE 多站点配置方法

    有时候开多个站点下面是具体的配置参数,大家看下,应该就可以自由的增加网站了。
    2009-08-08
  • 实例详解Linux 中的命令链接操作符

    实例详解Linux 中的命令链接操作符

    这篇文章通过实例代码给大家详细介绍了Linux 中的命令链接操作符,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-08-08
  • linux停止和查看启动服务的命令使用方法

    linux停止和查看启动服务的命令使用方法

    这篇文章主要介绍了linux停止和查看启动服务的命令使用方法,需要的朋友可以参考下
    2014-02-02
  • Linux企业运维人员常用的150个命令分享

    Linux企业运维人员常用的150个命令分享

    这篇文章主要介绍了Linux企业运维人员常用的150个命令(欢迎补充),具体多少个来着,我也没数。分享给大家,供需要的朋友参考。
    2017-10-10
  • Windows和Linux实现远程桌面连接

    Windows和Linux实现远程桌面连接

    这篇文章主要介绍了Windows和Linux实现远程桌面连接,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 详解如何使用Spark和Scala分析Apache访问日志

    详解如何使用Spark和Scala分析Apache访问日志

    这篇文章主要介绍了详解如何使用Spark和Scala分析Apache访问日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Ubuntu下sublime中文无法输入的处理方案

    Ubuntu下sublime中文无法输入的处理方案

    本文主要是给出了Ubuntu下sublime中文无法输入的处理方案,非常的实用,遇到相同问题的小伙伴们可以参考下
    2014-11-11

最新评论