Linux下用GDB调试C语言程序

Linux下指令

touch指令

作用

Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件

 语法

官方文档

touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

参数说明
1.  a 改变档案的读取时间记录。
2.  m 改变档案的修改时间记录。
3.  c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
4.  f 不使用,是为了与其他 unix 系统的相容性而保留。
5. r 使用参考档的时间记录,与 --file 的效果一样。
6. d 设定时间与日期,可以使用各种不同的格式。
7. t 设定档案的时间记录,格式与 date 指令相同。
8. --no-create 不会建立新档案。
9. --help 列出指令格式。
10. --version 列出版本讯息。

 基础语法
touch [option] file_name(s)

当不带任何选项使用时,用于创建没有任何内容的文件, 使用 touch 命令创建的文件是空的。 当用户在创建文件时没有要存储的数据时,可以使用此命令。

 Linux中的文件时间戳

以下命令显示当前目录下文件的时间戳

ls -l


在 Linux 中,每个文件都有三个时间戳:访问时间 (atime)、修改时间 (mtime) 和更改时间 (ctime):

  • 访问时间(atime) 是指上次查看文件但未编辑的时间。  
  • 修改时间(mtime) 表示文件被修改的时间。  
  • 更改时间(ctime) 显示对文件的元数据更改。 例如,文件权限更改。
检查包括文件时间戳在内的文件状态

使用以下命令

stat 文件名.格式

在当前目录中创建一个空文件
touch 文件名.格式

  编写C语言程序

全局变量 i
主函数
函数f

 编译运行程序

终端输入以下命令 

gcc test.c

输入以下命令查看当前文件夹得文件,发现多了一个a.out的文件

ls

用以下命令查看a.out文件

./a.out


用以下命令删除a.out文件

rm a.out

用命令生成命名的out文件

gcc test.c -o test.out

键入以下命令

 gdb ./test.out

终端会返回

Type "apropos word" to search for commands related to "word"...
Reading symbols from ./test.out...
(No debugging symbols found in ./test.out)

这是因为编译的时候默认不会把debugging symbols放进去
将命令

gcc test.c -o test.out

改为

gcc -g test.c -o test.out

这样就可以生成有debugging symbols功能的可执行文件 

当终端输出以下命令时说明此时正确

Reading symbols from ./test.out

 第一个调试指令 b

b = breakpoint ,打上间断点
几种方式:

b [函数名称]
b 绝对路径:行数
info b 可以让我们查看当前有哪些断点

b 绝对路径:行数

info b 可以让我们查看当前有哪些断点

 第二个调试指令r

r代表run
即将执行断点但是还没有执行

 第三个调试指令n

不进函数的单步

 第四个调试指令s

进函数的单步

 第五个调试指令k

kill the  program debugging
停止调试

第六个调试指令d 

与b相反,以下命令可以删除断点

d 断点编号


同时删除多个

 第七个调试指令c

continue 指令 程序经过断点继续向下运行到下一个断点或结束程序

第八个调试指令bt 

bt用来查看函数调用的栈
先经过main函数在调用的f ,自下往上看

第九个调试指令watch 

watch point 的作用是监视变量,一旦变量发生了变化,那么程序就停止

 第十个调试指令查看变量的值p

p point 用来查看point的值
p/x point 用来查看point的十六进制的值

 第十一个调试指令layout

layout src
ctrl + x + a即可关闭/打开窗口
layout asm可查看汇编,si是汇编上的单步跳转

 其他指令操作

info r :查看所有寄存器的值

 到此为止喽!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值