加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_新乡站长网 (https://www.0373zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux编译调试教程,Linux GCC/G++编译器与调试器简单的入门教程

发布时间:2023-01-30 13:06:41 所属栏目:Linux 来源:
导读:  GCC能编译C、C++、Ada、Object C和Java等语言,G++则专门用来编译C和C++语言的编译器。为保持兼容程序语言的最新特性,开发者通常选择GCC来编译C语言编写的源代码,选择G++来编译C++源代码。

  1、Linux G
  GCC能编译C、C++、Ada、Object C和Java等语言,G++则专门用来编译C和C++语言的编译器。为保持兼容程序语言的最新特性,开发者通常选择GCC来编译C语言编写的源代码,选择G++来编译C++源代码。
 
  1、Linux GCC/G++编译器的安装
 
  yum -y install make #安装make程序
 
  yum -y install gcc #安装GCC编译器
 
  yum -y install gcc-c++ #安装G++编译器
 
  yum -y install gdb #安装gdb调试器
 
  2、第一个程序hello world
 
  [root@VM_0_6_centos eric]# cat helloworld.c
 
  #include //这个头文件包含基本的输入输出函数
 
  int main()
 
  {
 
  char *c; //声明一个字符串变量c
 
  c = "hello world!";
 
  printf("%s\n", c); //输出该变量
 
  return 0; //程序结束时向操作系统返回0,表示正常退出
 
  }
 
  [root@VM_0_6_centos eric]# gcc -o helloworld helloworld.c #编译
 
  [root@VM_0_6_centos eric]# ls
 
  helloworld helloworld.c
 
  [root@VM_0_6_centos eric]# ./helloworld
 
  hello world!
 
  3、使用GDB调试程序
 
  3.1、使用-g参数编译源代码
 
  [root@VM_0_6_centos eric]# gcc -g -o helloworld helloworld.c #编译并连接程序,使之包含可被调试信息
 
  3.2、开始调试
 
  [root@VM_0_6_centos eric]# gdb helloworld gdb helloworld #使用GDB调试器打开helloworld可执行文件
 
  (gdb) list #列出GDB中打开的可执行文件代码
 
  1 #include //这个头文件包含基本的输入输出函数
 
  2 int main()
 
  3 {
 
  4 char *c; //声明一个字符串变量c
 
  5 c = "hello world!";
 
  6 printf("%s\n", c); //输出该变量
 
  7 return 0; //程序结束时向操作系统返回0,表示正常退出
 
  8 }
 
  (gdb) break 5 #对第5行打上断点
 
  Breakpoint 1 at 0x400535: file helloworld.c, line 5.
 
  (gdb) run #运行打开的可执行文件
 
  Starting program: /root/eric/helloworld
 
  Breakpoint 1, main () at helloworld.c:5
 
  5 c = "hello world!";
 
  Missing separate debuginfos, use: debuginfo-install glibc-2.17-292.el7.x86_64
 
  (gdb) print c #查看变量c的值,因为此时的断点打在这里还没执行,所以此时还没有值
 
  $1 = 0x0
 
  (gdb) next #单步执行程序(step可进入所调用的函数内部)
 
  6 printf("%s\n", c); //输出该变量
 
  (gdb) print c #查看变量c的值,此时发现已经赋好值
 
  $2 = 0x4005e0 "hello world!"
 
  (gdb) continue #从断点处继续执行
 
  Continuing.
 
  [Inferior 1 (process 4936) exited normally]
 
  (gdb) quit#退出gdb调试
 
  [root@VM_0_6_centos eric]#
 
  3.3、GDB常用调试命令
 
  命令
 
  命令简写
 
  描述
 
  file
 
  在GDB中打开执行文件
 
  break
 
  b
 
  设置断点, break
 
  info
 
  查看和可执行程序相关的各种信息
 
  kill
 
  终止正在调试的程序
 
  print
 
  p
 
  打印表达式的值,通过表达式可以修改变量的值或者调用函数
 
  set args
 
  设置调试程序的运行参数
 
  set var
 
  修改变量的值
 
  delete
 
  删除设置的某个断点或观测点
 
  clear
 
  删除设置在指定行号或函数的断点
 
  continue
 
  c
 
  从断点处继续执行程序
 
  list
 
  l
 
  列出源代码,接着上次的位置往下列,每次列10行
 
  list 行号
 
  l 行号
 
  列出从第几行开始的源代码
 
  list 函数名
 
  l 函数名
 
  列出某个函数的源代码
 
  watch
 
  在程序中设置观测点
 
  run
 
  运行打开的可执行文件
 
  next
 
  n
 
  执行下一行语句
 
  step
 
  s
 
  执行下一行语句linux编译器,如果有函数调用则进入到函数中
 
  backtrace
 
  bt
 
  查看各级函数调用及参数
 
  finish
 
  连续运行到当前函数返回为止,然后停下来等待命令
 
  frame 帧编号
 
  f
 
  选择栈帧
 
  info locals
 
  i
 
  查看当前栈帧局部变量的值
 
  quit
 
  q
 
  退出gdb调试环境
 
  start
 
  开始执行程序,停在main函数第一行语句前面等待命令
 
  ptype
 
  显示数据结构定义情况
 
  make
 
  编译程序
 

(编辑:开发网_新乡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!