Linux中C程序的编译及调试

本文介绍在Linux上进行C程序的编译、引用头文件及调试。可将用户自定义头文件移动到系统库中,用include<>调用;把main文件移到bin中可当作命令使用。对于有逻辑问题的C程序,可使用gdb命令调试,通过设置断点、监视变量等操作找出问题并修改。

引言

上一节最后我们说到,可以在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调试的其他命令 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值