GDB调试主要包括:

1、查看运行时数据

2、程序错误

3、gdb调试逻辑错误

4、gdb调试段错误

5、core文件调试

一、查看运行时数据

1、print 查看变量值

2、ptype 变量: 查看数据类型

3、print array(数组名):  查看数组

4、print *array@len(p *arr2@10 查看动态内存10个元素内容):  查看动态内存(malloc分配的内存),静态数组也可以这么查看

5、print  i=5 : 改变运行时数据

二、程序错误

1、编译错误:编写程序时没有符合语言规范导致编译错误

2、运行时错误:编译器检查不出这种错误,但在运行时可能导致崩溃

3、逻辑错误:程序逻辑出错

三、gdb调试段错误

段错误是由于访问非法地址而产生的错误,访问系统数据区,尤其是往系统保护的内存地址写数据,最常见就是给一个指针以0地址,或者内存越界访问到不属于你的内存区等。

例如:

  1 #include<stdio.h>
2 #include<stdlib.h>
3
4 void segfault()
5 {
6 int *p =NULL;
7 *p=100;
8 }
9
10 int main(void)
11 {
12 segfault(); }
[root@tlinux shell]# gcc -g seg.c -o seg
[root@tlinux shell]# gdb seg
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-110.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>;
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>;...
Reading symbols from /shell/seg...done.
(gdb) r
Starting program: /shell/seg Program received signal SIGSEGV, Segmentation fault.
0x00000000004004dd in segfault () at seg.c:7
7 *p=100;
Missing separate debuginfos, use: debuginfo-install glibc-2.17-260.el7_6.3.x86_64
(gdb) bt
#0 0x00000000004004dd in segfault () at seg.c:7
#1 0x00000000004004f3 in main () at seg.c:12
(gdb)

四、core文件调试

详见https://www.cnblogs.com/wsw-seu/p/10589187.html

gdb调试入门(下)的更多相关文章

  1. Linux gdb调试入门

    没有使用过gdb调试过程序的觉得gdb是个很神奇的东东,如果你使用它调试一次保证你想忘记它都难,下面看看它的庐山真面目吧! GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具. ...

  2. gdb 调试入门,大牛写的高质量指南

    引用自:http://blog.jobbole.com/107759/ gdb 调试 ncurses 全过程: 发现网上的“gdb 示例”只有命令而没有对应的输出,我有点不满意.gdb 是 GNU 调 ...

  3. gdb调试入门(上)

    一.什么是gdb:gdb是GNU debugger的缩写,是编程调试工具二.gdb功能:1.启动程序,可根据用户要求随心所欲的运行程序(比如带参数)2.可让被调试的程序在用户指定的调试的断点处停住3. ...

  4. Linux下编译ffmpeg并用GDB调试

    1.在Ubuntu界面上调处命令行界面,最方便的方式是使用快捷键Ctrl+Alt+T. 2.安装SDL SDL是一个开源的多媒体开发库,可以设置图像和视频的绘制等操作.如果不安装SDL,FFMPEG将 ...

  5. 一文入门Linux下gdb调试(二)

    作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述     今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的 ...

  6. 一文入门Linux下gdb调试(一)

    作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述 在window下我们习惯了IDE的各种调试按钮,说实话确实挺方便的,但到了Linux下,没有那么多的IDE ...

  7. win10下搭建jz2440v3(arm s3c2440)开发及gdb调试环境【转】

    本文转载自:https://blog.csdn.net/newjay03/article/details/72835758 本来打算完全在Ubuntu下开发的,但是水平有限,没有在Ubuntu下找到合 ...

  8. Linux下GDB调试

    GDB 是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行 序列,形成脚本.UNIX 下的软件全是命令行的,这给程序开发提供了极大的便利,命令行 软件的优势在于, 他们可以非常容 ...

  9. Linux下GDB调试C/C++

    首先先编译程序并生成调试符号: gcc -g -c main.cpp gcc -o exefile main.o 以上的exefile为可执行程序的文件名 然后: gdb exefile 可以开始gd ...

随机推荐

  1. MeteoInfoLab脚本示例:多Y轴图

    数据范围相差比较大的数据序列进行对比的时候多Y轴图就很重要了.MeteoInfoLab中提供了一个twinx函数来根据已有的坐标系(Axes)生成一个新的Axes,这个命令会使得已有的Axes不绘制右 ...

  2. 非科班8k,靠这套知识体系收入暴涨100%!

    我是18年毕业,非科班,毕业即进入互联网行业.坐标深圳,java程序员,当时到手薪资8k左右. bat等大厂月薪薪资动辄20k,25k,还不包括"签字费",福利和奖金.当然,薪资也 ...

  3. composer 打印美化

    { "name": "brady_frmwork", "description":"php framwork", &qu ...

  4. ReSharper 注册码

    用户名:ronle 注册码:ZoJzmeVBoAv9Sskw76emgksMMFiLn4NM 原文地址:http://hi.baidu.com/ronle/item/a509b5f7b851971be ...

  5. 安装Linux注意事项

    网络配置NAT Worstation 生成虚拟网卡,编辑虚拟网络中子网IP地址为10网段内部地址,避免冲突.  Linux命令 查看主机IP地址 [root@C8 ~]# hostname -I 19 ...

  6. Vue踩坑日记-Element this.$message 找不到模块

    在使用Vue.js的 Element框架时,无法使用Message组件 浏览器提示:找不到组件 原始写法: this.$message({ message: '恭喜你,这是一条成功消息', type: ...

  7. ValidatorException-异常

    Java在发送Https请求的时候,不可避免的会发生SSL证书认证失败 错误信息:sun.security.validator.ValidatorException: PKIX path buildi ...

  8. 2020年Java基础超高频面试题汇总(1.2W字详细解析)

    1. Java语言有哪些特点 (1)简单易学.有丰富的类库 (2)面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) (3)与平台无关性(JVM是Java跨平台使用的根本) (4)可靠安全 ...

  9. nexus私服部署

    1,下载安装包,解压,执行以下命令启动服务. nexus.exe /run 2,访问http://localhost:8081访问管理界面,添加一个maver2(proxy)的仓库,代理地址填写阿里云 ...

  10. Redis---08Redis集群(一)

    一.什么是Redis集群 Redis 集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N. Redis 集群通过分区(parti ...