gdb之初识

1. gdb是什么
以前在windows下开发的时候一直都使用的windows的编辑器(VS), 调试则使用的IDE自带的调试手段,
F9: 设置断点
F5: 执行直到遇到断点
F10: 单步执行
F11: 单步且遇到函数则进入函数
shift+F5: 跳出调试模式
只记录基础的,如果以后再去windows上开发则做补充。
gdb是Linux调试的工具,灰常强大。 关于gdb这个版块不是一次直接写完,先把用的部分写出来一点,以后用到就补充。

2. gdb基础使用
# vi one.c
#include <stdio.h>

void fun1(int ac)
{
    printf("in fun1, the ac is %d\n", ac);
}

void fun2(const char *str)
{
    printf("in fun2, the str is %s\n", str);
}

int main(int argc, char *argv[])
{
    printf("hello gdb\n");

    fun1(argc);
    int i = 1;
    for (; i<argc; i++)
    {
        fun2(argv[i]);
    }
    return 0;
}
# gcc -g -Wall -Werror one.c -o one            // 必须要加 -g 选项, 否则不会加载符号表之类的,调试不方便
# gdb one
(gdb) l   10        // list, 列出程序   : 列出后面10行
6 }

8 void fun2(const char *str)
9 {
10     printf("in fun2, the str is %s\n", str);
11 }
12 
13 int main(int argc, char *argv[])
14 {
15     printf("hello gdb\n");
# (gdb) b main        // b 设置断点    :在main函数设置断点,b后面可以接函数名; 等于命令b 15,  可以接行数
Breakpoint 1 at 0x40055e: file one.c, line 15.
# (gdb) info b         // info 显示信息    :显示所有的断点
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x000000000040055e in main at one.c:15
# (gdb) r                // r  开始执行       : 程序开始执行,直到遇到断点或者执行完成
Starting program: /root/gdb/one

Breakpoint 1, main (argc=1, argv=0x7fffffffe688) at one.c:15
15     printf("hello gdb\n");
# (gdb) n               // n  下一步          : 执行该行命令,并显示下一行
hello gdb
17     fun1(argc);
# (gdb) <CR>            // 换行   执行上一次的命令            : 再执行一次n
in fun1, the ac is 1
18     int i = 1;
# (gdb)  c               // 一直执行直到遇到断点
Program exited normally.
并没有进入到fun2,因为没有传递参数,那再来一遍且带参数
# gdb one
# (gdb) b 21            // 直接将断点打到 fun2那里
# (gdb) r 1 2 3 4     // 运行并带参数(1 2 3 4)
Breakpoint 1, main (argc=5, argv=0x7fffffffe668) at one.c:21
21         fun2(argv[i]);
# (gdb) s                // 单步执行          : 与n不同的是它会进入函数
fun2 (str=0x7fffffffe8d5 "1") at one.c:10
10     printf("in fun2, the str is %s\n", str);

多个文件中有相同的函数 function_test()
(gdb) b function_test           // 所有函数都打断点

(gdb) b a.c:function_test       // a.c中的函数断点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值