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
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 终止正在调试的程序 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 编译程序 (编辑:开发网_新乡站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐