Linux中C程序的编译及调试

引言

上一节最后我们说到,可以在Linux上进行c语言的编译

在Linux中安装了gcc后就可以进行c程序的编译调试运行等操作

那么这一节我们就从简单的c程序进一步加入多个c文件影响的c程序

例如在vs中 一个程序需要引入用户自定义的头文件

例如这个c程序

因为c程序主体使用了头文件中的结构体变量和函数定义,所以我们需要引入用户自定义的头文件

那么我们在Linux中来实现

首先定义头文件和c程序主体

在头文件中仅定义函数定义

 

那么我们在调用函数的时候我们就需要使用include" "调用

那么在vs中,如果是用户自定义的头文件,我们就需要使用“   ” 来引用用户自定义的头文件 

那么在Linux中,我们有没有可能可以有一种方法来使用include<>来引用用户自定义的头文件呢

我们可以看看include的应用原理

include<>的引用其实是引用系统定义好的头文件

在Linux中 ,这种系统自定义的头文件在 根目录下的用户目录中的include下

(/usr/include/)

系统定义好的头文件我们就可以直接使用include<>调用

在上一节中我们学习到了移动文件的命令

那么我们可以将用户自定义的头文件移动到系统定义好的库中

就可以使用include<>调用用户自定义的头文件

但是需要注意的是我们需要使用管理员身份运行这个命令 因为这里涉及到了对家目录之外的目录操作

我们这里调用使用一下

可以看到我们需要使用管理员身份

 

然后把include" "改为include<>

然后一步编译出可执行程序并运行

 

 可以看到这样我们就可以将用户自定义的头文件直接用<>调用

上一节我们说到 在执行可执行程序时应带上地址 不然会解析成命令无法执行成功

那么我们可以效仿上一个使用方法

把main移动到命令库中便可

Linux中的基本命令储存在bin中

那么我们便可直接把main移动到bin中,就可以当作命令使用

但是需要注意的是,涉及到系统文件的操作都要谨慎使用,这里只是提供一个想法,如何系统库中有和你移动文件同名的文件,那么就会被你移动的文件覆盖,从而影响Linux的正常使用

那么如果一个文件没有编译上的问题,而是有逻辑问题

那么我们在Linux中应该如何调试呢

Linux中调试c程序使用的是gdb命令

gdb和以往一样需要安装

然后具体使用

在编译时有细小差别

这里我们编写一个字符串操作函数

 这个文件在编译上是没有错误的

我们这里使用一下gdb

可以看到在编译阶段要多一个 -g

然后直接gdb gdb的对象是编译后的可执行文件

如果成功安装gdb 那么这里就可以显示一个gdb字样

然后就可以对其进行操作

gdb l查看文件一到10行

 

然后加上数字的话就可以跳转到某一行

 然后下断点是

b 加某一行 

这里我们将断点下到9行

然后可以进入断点

 使用info b命令

然后我们可以用run运行程序 

他会停在断点位置

然后n可以下一步

这个函数的功能是从键盘获取字符串并输出

然后如果是end,结束并退出

但是这里显示并没有退出,那么就是程序内部逻辑问题

那么我们就用p监视变量 

可以看到变量buffer中多存储了一个"\n"

那么我们就可以用q退出调试再修改程序 

 

修改程序

 

发现调试成功

还有一种修改方式是使用strncmp函数

这就实现了一个简单c程序的调试 

 

这里是gdb调试的其他命令 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值