GCC和GDB

简介:

1、GCC

  linux下,gcc 是指gcc c编译器。我们从一个程序到一个可执行文件来说明gcc的几个选项:

  如果你写的代码是hello.c,你的程序将经历下面的步骤到达硬盘或者内存成为可执行文件。

gcc -E main.c -o main.i //第一步:hello.c(文本)经过预编译生成hello.i(文本)

gcc -S main.i -o main.S //第二步:hello.i(文本)经过编译器生成hello.s(汇编。文本)

gcc -c main.c -o main.o //第三步:hello.s(文本)经过汇编器生成hello.o(二进制)。

gcc main.o -o main    //第四步:hello.o(二进制)经过链接器生成hello可执行文件。

wKiom1noBM2hp6S6AACH8TfOt6I961.png

一般情况下用gcc main.c -o main 就可以直接生成可执行文件main。

2、gdb(一些基本的调试命令)

需要调试的程序在编译的时候要加 -g 选项,程序才能进行调试

wKiom1noBwiiWOxaAADzyX-Rm7k841.png

list 显示源文件:

          list 没有参数,显示当前行之后或周围的10多行

          list start,end  显示从行号start到end之间的代码行。

wKiom1noCd7DSgt0AABTaqHGwAQ473.png

print 查看运行时的数据

    print i    显示当前变量i的值

    print &i   显示变量i的存放地址

    print array@1   显示从array(数组名)开始的5个值

    print array[2]@3  显示从array第二个元素开始的3个数组元素的值

    whatis i       显示变量i的数据类型

设置断点 break

   break linenum    在当前文件指定行linenum处设置断点

    break function   在当前文件函数function的入口处设置断点

显示断点 info  info breakpoints/break/watchpoints  [num]

单步跟踪 step [N]  如果遇到函数调用,并且该函数编译时有调试信息,则会进入该函数内执行。

       next [N]  遇到函数调用时,执行整个函数。

连续执行continue 从当前行开始,连续执行到下一个断点处,或者到达该程序结束。命令中可以给出一个数字N,忽略其后N-1次断点。

运行程序 run。

clear(清除所有已定义的断点),delete(删除所有断点,后面可给出断点号码,多个断点用空格分开)

3c2c56c4b7616619b505d3ebc7cc909c.png

6857b05b227a7a81f1350532880fa0e2.png

  最后,补充一句上面的函数都可以用首字母简写



本文转自 8yi少女的夢 51CTO博客,原文链接:http://blog.51cto.com/zhaoxiaohu/1974129,如需转载请自行联系原作者

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
12月前
|
自然语言处理 NoSQL Linux
【Linux】编译器gcc g++和调试器gdb的使用(上)
【Linux】编译器gcc g++和调试器gdb的使用(上)
【Linux】编译器gcc g++和调试器gdb的使用(上)
|
12月前
|
NoSQL Linux 编译器
【Linux】编译器gcc g++和调试器gdb的使用(中)
【Linux】编译器gcc g++和调试器gdb的使用(中)
|
4月前
|
NoSQL 编译器 Linux
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
41 0
|
5月前
|
NoSQL Linux 开发工具
【Linux】5. 开发工具的使用(gcc/gdb/makefile)
【Linux】5. 开发工具的使用(gcc/gdb/makefile)
54 2
|
NoSQL IDE Unix
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(2)
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(2)
168 0
|
5月前
|
NoSQL 编译器 Linux
Linux——编译器gcc/g++、调试器gdb以及自动化构建工具makefile&&make详解
Linux——编译器gcc/g++、调试器gdb以及自动化构建工具makefile&&make详解
|
12月前
|
NoSQL Linux 编译器
【Linux】编译器gcc g++和调试器gdb的使用(下)
【Linux】编译器gcc g++和调试器gdb的使用(下)
|
NoSQL Linux 开发工具
Linux基础操作6(yum,vim,gcc,gdb,makefile)
Linux基础操作6(yum,vim,gcc,gdb,makefile)
89 0
|
NoSQL Linux C语言
gcc 和gdb
恶补一下大学Linux C的常用操作
89 0
|
NoSQL Ubuntu IDE
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(1)
Linux开发工具大全 - 软件包管理器yum | vim编辑器 | gcc/g++编译器 | 自动化构建工具Make/Makefile | gdb调试工具(1)
207 0