在linux里,c程序的编辑、编译、调试的详细步骤是什么?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-05
在linux下怎样用GDB调试make编译的程序?

调试生成的可执行文件,即.exe文件

Linux调试程序用gdb,gdb是一个命令行调试器;如果希望用图形界面调试程序(就像在Windows平台编程时那样),也可以用调用了gdb的图形界面调试器ddd或者Kdbg,ddd和Kdbg其实是通过调用gdb来完成所有的调试功能,所以功能上一点也不弱。

    在linux下,一般的c程序开发流程为:

  1. c程序的编辑:

    一般情况下,简单的c程序编辑是通过vi文本编辑器进行的,语法格式和在windows下的编辑是一样的;

  2. c程序的编译:

    而编译则是对编辑好的c语言程序进行一个,预处理,编辑,汇编和链接的过程,一般格式为:     编译器名 -参数 目标文件名 源文件名;

    一般工作在命令行模式;

  3. c程序的调试:

    调试阶段则是建立在c程序编译通过的情况下进行的,一般通过GDB调试进行,逐步排错和细节查看。



程序编写
命令行下的有vi,emacs
有界面的kwrite等等
编译用gcc
调试用gdb

一个编译调试示例
——————
源程序:tst.c
1 #include <stdio.h>
2
3 int func(int n)
4 {
5 int sum=0,i;
6 for(i=0; i<n; i++)
7 {
8 sum+=i;
9 }
10 return sum;
11 }
12
13
14 main()
15 {
16 int i;
17 long result = 0;
18 for(i=1; i<=100; i++)
19 {
20 result += i;
21 }
22
23 printf("result[1-100] = %d \n", result );
24 printf("result[1-250] = %d \n", func(250) );
25 }
编译生成执行文件:(Linux下)
hchen/test> gcc -g tst.c -o tst
使用GDB调试:
hchen/test> gdb tst <---------- 启动GDB
GNU gdb 5.1.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-suse-linux"...
(gdb) l <-------------------- l命令相当于list,从第一行开始例出原码。
1 #include <stdio.h>
2
3 int func(int n)
4 {
5 int sum=0,i;
6 for(i=0; i<n; i++)
7 {
8 sum+=i;
9 }
10 return sum;
(gdb) <-------------------- 直接回车表示,重复上一次命令
11 }
12
13
14 main()
15 {
16 int i;
17 long result = 0;
18 for(i=1; i<=100; i++)
19 {
20 result += i;
(gdb) break 16 <-------------------- 设置断点,在源程序第16行处。
Breakpoint 1 at 0x8048496: file tst.c, line 16.
(gdb) break func <-------------------- 设置断点,在函数func()入口处。
Breakpoint 2 at 0x8048456: file tst.c, line 5.
(gdb) info break <-------------------- 查看断点信息。
Num Type Disp Enb Address What
1 breakpoint keep y 0x08048496 in main at tst.c:16
2 breakpoint keep y 0x08048456 in func at tst.c:5
(gdb) r <--------------------- 运行程序,run命令简写
Starting program: /home/hchen/test/tst
Breakpoint 1, main () at tst.c:17 <---------- 在断点处停住。
17 long result = 0;
(gdb) n <--------------------- 单条语句执行,next命令简写。
18 for(i=1; i<=100; i++)
(gdb) n
20 result += i;
(gdb) n
18 for(i=1; i<=100; i++)
(gdb) n
20 result += i;
(gdb) c <--------------------- 继续运行程序,continue命令简写。
Continuing.
result[1-100] = 5050 <----------程序输出。
Breakpoint 2, func (n=250) at tst.c:5
5 int sum=0,i;
(gdb) n
6 for(i=1; i<=n; i++)
(gdb) p i <--------------------- 打印变量i的值,print命令简写。
$1 = 134513808
(gdb) n
8 sum+=i;
(gdb) n
6 for(i=1; i<=n; i++)
(gdb) p sum
$2 = 1
(gdb) n
8 sum+=i;
(gdb) p i
$3 = 2
(gdb) n
6 for(i=1; i<=n; i++)
(gdb) p sum
$4 = 3
(gdb) bt <--------------------- 查看函数堆栈。
#0 func (n=250) at tst.c:5
#1 0x080484e4 in main () at tst.c:24
#2 0x400409ed in __libc_start_main () from /lib/libc.so.6
(gdb) finish <--------------------- 退出函数。
Run till exit from #0 func (n=250) at tst.c:5
0x080484e4 in main () at tst.c:24
24 printf("result[1-250] = %d \n", func(250) );
Value returned is $6 = 31375
(gdb) c <--------------------- 继续运行。
Continuing.
result[1-250] = 31375 <----------程序输出。
Program exited with code 027. <--------程序退出,调试结束。
(gdb) q <--------------------- 退出gdb。

(1)用工具写好C程序...比如vi
(2)打开终端,进入你存放C语言代码的路径 例如: cd /opt/
(3)gcc a.c -o abc 意思是:把你的a.c编译成abc可执行文件
(4)在当前目录终端下 运行生成的abc,例如: ./abc 前面的.不要掉了
后面可以用gdb进行调试,你可以自己去学习...这是最基本的!!

  • linux执行c文件linux执行c文件
    答:linux终端下如何进行C语言编译?1、进入linux系统,创建C文件“vimtest.c”同时进入vim编辑界面,也可以利用指令“touchtest.c”创建后,然后“vimtest.c”进入vim编辑界面。2、vim编辑界面,由“ESC”建来切换三种模式,一般模式:在Linux终端中输入“vim文件名”就进入了一般模式,但不能输入文字。编辑...
  • linux编写c语言程序并使用gcclinux编写c语言程序
    答:按车即推vim编辑器终端命令窗口(类似xp命令提示符)输入 gcctest.c步编译 ./a.out执行输helloworld 结束前提已经安装gcc linux下c语言编程和平常有什么区别?linux下c语言编程和平常有太多区别。Linux下写C语言程序是非常方便的,你编你编写完程序之后就可以在命令行输入编译指令,编译完成之后就可以运行...
  • linux怎么运行c程序
    答:gcc -o hello hello.c 编译成功完成后,在当前路径下,生成一个名为hello的文件,然后执行 ./hello 在屏幕上,你将会看到打印结果:Hello,Linux.说明:在默认情况下,编译成功完成后,会在当前路径下,生成一个名为a.out的文件,然后执行$./a.out便可打印结果,但通常可以通过选项-o来指定自己的可执行程序...
  • linuxc语言编译linuxc语言编译
    答:目前主流的C语言编译软件是什么?GCC 毫无疑问,GCC几乎是unix及linux系统中最通用的编译器套件,几乎所有的linux发行版都预装了GCC作为C语言的默认编译器。除了对C语言的支持,GCC还支持C++、Objective-C等多种语言。GCC早在1987就由RichardStallman作为GNU计划的一部分发布。Clang Clang是近几年新兴的C/...
  • 在linux命令界面下怎么进入C编译环境?
    答:Linux下C程序的编辑,编译和运行以及调试 要使用的工具:编辑:vim(vi)编译和运行:gcc 调试:gdb 1. 安装很简单(以下是以在CentOS中安装为例):yum vim gcc gdb 2. 使用vim编辑源文件 首先,打开终端练下手:vim hello.c 3. (进入一般模式)按下"i",进入编辑模式,在编辑模式下输...
  • linux命令行编译c程序linux命令行编译
    答:linux下执行qt程序怎么编译运行?1、在Linux下的命令行编辑程序:#mkdirhello//mkdir命令创建一个hello目录#cdhello//cd命令切换到刚才创建的hello目录#vimain.cpp//在hello目录中用vi创建一个main.cpp文件将下面的代码输入到main.cpp文件中#include archlinux中怎么编译c++?大部分linux系统都安装了g++(...
  • linux 怎么编译c的源程序的?gcc,编译命令是什么?
    答:编译方法:格式 gcc [option] [sourcefilename]常用的选项最简单的是:gcc hello.c默认的情况下将生成a.out的可执行性文件,只需要在终端上输入./a.out就可以看到执行的结果,如果你想指定生成目标文件的名字那么你可以加上 -o选项,命令如下:gcc -o hello hello.c 命令:gcc -c hello hello.c ...
  • linux编译运行c文件linux编译运行
    答:4.执行编译程序make 5.最后执行编译安装sudomakeinstall,完成 linux下执行qt程序怎么编译运行?1、在Linux下的命令行编辑程序:#mkdirhello//mkdir命令创建一个hello目录#cdhello//cd命令切换到刚才创建的hello目录#vimain.cpp//在hello目录中用vi创建一个main.cpp文件将下面的代码输入到main.cpp文件中#...
  • linux编译c语言命令linux编译c语言
    答:怎么在linux中编写c语言程序?先在终端中输入vimtest.c回车进入vim编辑器,再按一下a键,进入编辑状态,然后输入如下C语言语句:includestdio.h>intmain(){printf(helloworld!n);}到此,按esc键退出编辑状态,再输入一个冒号(shift+冒号分号那个键),紧跟着输入wq,即输入:wq按回车,即推出vim编辑器...
  • linuxcp格式linuxc格式
    答:2>在当前目录下、生成名字叫first(这个名字可以自己随便写、符合linux命名规则就行)的可执行程序;关于运行:用ls-l命令,可以看到当前目录下有一个绿色的文件、名字叫first,就是刚刚编译得到的文件;使用命令“./first”既可运行(无双引号、双引号是用来说明的);在linux里,c程序的编辑、编译、...