关于gcc、g++、gdb的一些知识
2017-04-13 21:33
246 查看
先提一句,我们在讲源文件编译生成为可执行文件时,过程应该是这样的:
预处理->编译->汇编->链接
-o:指定生成的输出文件
-E:仅执行编译预处理
-wall:显示警告信息
-S:将C代码转换为汇编代码
-c:仅执行编译操作,不进行链接操作
样例:
gcc project.c -o test.out
若多文件编译,则:
gcc project_one.c project_two.c -o test.out
当然,也可以分别进行编译操作,然后进行链接:
gcc project_one.c -c
gcc project_two.c -c
gcc project_one.o project_two.o -o test.out
-o:指定生成的输出文件
-E:仅执行编译预处理
-S:将C代码转换为汇编代码
-c:仅执行编译操作,不进行链接操作
除此以外,g++还有一些关键参数:
-x “language” :指定其后输入文件的语言
这里,我们就把tmp.cpp文件指定为c语言了,当然会不会出错,就的看tmp.cpp文件里的内容了。
在Terminal中输入gdb,即可进入gdb操作界面。
file “Filename”
加载被调试的可执行程序文件,若文件不在当前目录,则需要添加路径
r
运行被调试的程序,r:run
b <行号>
b <函数名称>
b *<函数名称>
b *<代码地址>
设置断点,断点编号从1开始递增,b:breakpoint
c
继续执行被调试程序,c:continue
d <编号>
删除指定编号断点,或删除所有断点,d: delete breakpoint
p <变量名称>
显示指定变量的值,p:print
q
退出gdb调试环境,q:quit
help<命令名称>
查询该命令的说明
PS:alias可以设置别名,比如:alias t=”gcc”,则 t p.c等价于gcc p.c
参考资料:
http://blog.csdn.net/liigo/article/details/582231/
http://man.linuxde.net/gcc
预处理->编译->汇编->链接
gcc
选项:-o:指定生成的输出文件
-E:仅执行编译预处理
-wall:显示警告信息
-S:将C代码转换为汇编代码
-c:仅执行编译操作,不进行链接操作
样例:
gcc project.c -o test.out
若多文件编译,则:
gcc project_one.c project_two.c -o test.out
当然,也可以分别进行编译操作,然后进行链接:
gcc project_one.c -c
gcc project_two.c -c
gcc project_one.o project_two.o -o test.out
g++
选项:-o:指定生成的输出文件
-E:仅执行编译预处理
-S:将C代码转换为汇编代码
-c:仅执行编译操作,不进行链接操作
除此以外,g++还有一些关键参数:
-x “language” :指定其后输入文件的语言
e.g. g++ -x c tmp.cpp
这里,我们就把tmp.cpp文件指定为c语言了,当然会不会出错,就的看tmp.cpp文件里的内容了。
GDB
基本操作:在Terminal中输入gdb,即可进入gdb操作界面。
file “Filename”
加载被调试的可执行程序文件,若文件不在当前目录,则需要添加路径
r
运行被调试的程序,r:run
b <行号>
b <函数名称>
b *<函数名称>
b *<代码地址>
设置断点,断点编号从1开始递增,b:breakpoint
c
继续执行被调试程序,c:continue
d <编号>
删除指定编号断点,或删除所有断点,d: delete breakpoint
p <变量名称>
显示指定变量的值,p:print
q
退出gdb调试环境,q:quit
help<命令名称>
查询该命令的说明
PS:alias可以设置别名,比如:alias t=”gcc”,则 t p.c等价于gcc p.c
参考资料:
http://blog.csdn.net/liigo/article/details/582231/
http://man.linuxde.net/gcc
相关文章推荐
- 12-3-10关于gcc一些知识,如何编写makefile
- 关于g++和gcc的一些误区
- 关于Java编程的一些小知识
- 关于字符集的一些知识
- 关于项目管理的一些知识要点
- 一些关于PHP的知识
- 一些关于PHP的知识
- 关于blog的一些知识
- 关于dos启动的一些知识
- 关于垃圾回收的一些知识
- 关于gcc与g++
- 关于gcc和g++编译的问题
- 关于DNS的一些基础知识
- 关于SQL SERVER 2000的一些基本知识(2)——SQL SERVER 2000日期处理
- 一些关于流量和带宽的知识
- GeoGraphics文档中关于坐标系统的一些知识
- 关于SQL SERVER 2000的一些基本知识(1)——简单的SQL语句
- [转载]关于数据库的一些基本知识
- 一些关于sulinux的知识