码迷,mamicode.com
首页 > 数据库 > 详细

gcc与gdb的使用

时间:2015-01-07 16:45:08      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:

1.gcc/g++编译过程:

  gcc/g++的编译格式:

  gcc [option][filename]...

  g++ [option][filename]...

  1)processing:预处理过程,对文件中的文件包含,预编译语句进行处理,使用参数-E;

  2)compilation:调用cc进行编译,将输入文件编译成.s的汇编文件,使用参数-s;

  3)Assembly:调用as进行编译,将.S或.s文件编译成.o的目标文件,使用参数-c;

  4)Linking:在生成目标文件生进行连接,使用参数-o。

  后缀标识处理:

后缀 语言 处理
.c c语言 预处理,编译,汇编
.C c++语言 预处理,编译,汇编
.cc c++语言 预处理,编译,汇编
.cxx c++语言 预处理,编译,汇编
.i c语言 编译,汇编
.ii c++语言 编译,汇编
.s 汇编语言 汇编
.S 汇编语言 预处理,汇编

  一个简单的例子:(g++与gcc的用法相同)

  技术分享

  gcc -c hello.c (包含了-E,-s)编译源文件,生成目标文件:

  技术分享

  gcc -o hello hello.o连接,生成可执行文件hello:

  技术分享

  ./hello执行可执行文件hello

  技术分享

2.gdb的基本命令

  GDB是GNU发布的一个强大的Unix/Linux下的程序调试工具,可以完成如下调试功能:

  1)自定义运行程序;

  2)设置断点;

  3)动态设置程序运行变量值;

  4)程序的单歩执行。

  一个简单的例子:

  技术分享

  如果要用gdb进行调试程序,在编译时应该使用-g参数,生成可执行文件:

  gcc -g test.c -o test

  技术分享

  l(list的缩写,表示列出源码),l n 表示从第n行列出源码:

  技术分享

  break表示添加断点,break n 表示在第n行设置断点,break fun表示在函数入口设置断点,info breakpoints表示查看断点信息,可用delete删除断点:

  技术分享

  r(run)运行程序:

  技术分享

  n(next)运行下一行,c表示继续运行程序:

  技术分享

  p表示打印,p i表示打印变量i的值:

  技术分享

  bt查看堆栈,回车表示继续上一个命令:

  技术分享

  finish结束执行:

  技术分享

  q表示退出gdb。

 

gcc与gdb的使用

标签:

原文地址:http://www.cnblogs.com/xp12/p/4208103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!