在linux环境下通过g++编译器和vim编辑器来编写程序,
介绍linux环境下g++编程和gdb调试以及makefile的编写。
vim helloworld.cpp
g++ -E helloworld.cpp >helloworld.i
通过执行上面的命令,输出预处理后的文件,如下面部分可以看到主要做宏的替换、注释的消除以及找到相关库文件。在该步骤不会进行语法错误检查。
cat helloworld.i |less
将预处理的文件转换成汇编语言,生成文件.s[编译器egcs]
g++ -S helloworld.cpp
3.汇编变为目标代码,生成.O文件
在该步骤进行词法和语法的检查,比如花括号不匹配,行末没有分号,关键字错误等。
g++ helloworld.cpp -o hello
gdb
当程序编译完成,需要对程序进行调试跟踪代码块的执行。gdb是GNU开发组织发布的一个强大的UNIX/Linux下的程序调试工具。主要有以下功能:
1.启动程序,可以按照用户自定义的要求运行程序。
2.可让被调试的程序在用户所指定的调试的断点处停住 (断点可以是条件表达式)。
3.当程序停住时,可以检查此时程序中所发生的事。
4.动态地改变程序的执行环境。
从功能上来看,gdb和一般的调试工具区别不大,可能习惯了图形化的调试工具暂时还不大习惯,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。
g++ -g helloworld.cpp -o test
gdb test
l表示列出源码命令
l
break 4在源程序第4行设置断点
info break //显示断点信息Num Type Disp Enb Address What
r //运行程序,run命令简写Starting program
Breakpoint 1, main () at helloworld.cpp:16//在断点处停住6;
n //单条语句执行,next命令简写
(gdb) p i//打印变量result的值,print命令简写
bt查看函数堆栈
c //继续运行程序,continue命令简写。
q //退出gdb