linux下c编程

来源:互联网 发布:树莓派网络摄像头 编辑:程序博客网 时间:2024/05/17 07:15

配置好linux,我想做的就是试试gcc,但作为小白,还得网上找教程,看的没有很简单的介绍,正好自己慢慢摸索写一篇。

首先c语言我已经不陌生了,很快用文本编辑器写一个简单的sum程序,关键学学用命令行的形式来调试。

在终端中输入gcc sum.c,会产生默认的a.out可执行文件,然后输入./a.out就在终端中输出结果了。

但不能总直接用这个,写下一个程序就会覆盖掉第一个a.out,所以用gcc -o sum sum.c,产生sum文件

还有些-c,-s 的命令目前没有涉及,用的时候再看


然后是调试,我原来在win中就习惯用f10单步运行,linux中也有强大的调试功能

输入gcc -g sum.c -o test    加-g选项产生debug信息
然后gdb test,执行此命令后会出现gdb的版本号等信息

在(gdb)后输入如下命令(可以用首字母)

list:列表显示源代码。

  (gdb) list      //一次显示十行程序

  (gdb) list <line-number>  //显示参数行之前和之后的10行内容,比如list 10,会将5-14之间的内容打印出来

  (gdb) list <line1,line2>  //显示参数之间的内容


next:执行一行源代码但不进入函数内部。


step:执行一行源代码而且进入函数内部。


run:执行当前被调试的程序

     run <arg1 arg2...>

     arg1,2是传递给程序的参数。
     可以使用set命令,设置传递给程序的参数,然后直接run即set args argument1 argument2


quit:终止gdb


watch:监视一个变量的值


break:在代码里设置断点,程序执行到这里时挂起

  1.设置断点

  (gdb)break <line-number> //某行设置

  (gdb)break <function-name> //某个函数前设置断点

  2.有时需要查看运行中变量等于某个值时,程序的状态,比如for循环执行到第几次时相关变量的值。这时可以使用断点。

  (gdb)break <line-number> if <conditional expression> //表达式符合C语法

  (gdb)break 10 if i==3
         注:条件表达式中的变量必须是在设置断点的行的变量作用域内。
  3.如果断点已经设置好,可以使用condition 命令为指定断点添加条件

  (gdb)condition break-number if <expression>
  4.可以在指定的源文件中设置断点

  (gdb)break <filename:line-number>

  (gdb)break <filename:function-name>

  如:(gdb)break main.c:10

   (gdb)break main.c:main

  5.删除断点

  (gdb)info break //打印所有断点信息

  (gdb)delete breakpoint <point-number>

  6.观察点(数据断点)

  (gdb)watch <condition>

  断点与观察点的区别:1.所有使用与breakpoint的操作都适用于watchpoint

                    2.断点是CPU到某一地址取指令时中断,观察点是CPU到某一地址读写数据时中断。


make:不退出gdb而重新产生可执行文件

shell:不离开gdb而执行shell

kill:终止正在调试的程序。

0 0
原创粉丝点击