系统 Ubuntu

调试示例:

#include <stdio.h>

int func(int n)
{
int sum=,i;
for(i=;i<n;i++)
{
sum+=i;
}
return sum;
} main()
{
int i;
long result = ;
for(i=;i<;i++)
{
result += i;
} printf("result[1-100] = %d \n",result);
printf("result[1-250] = %d \n",func());
}

编译生成执行文件:

gcc -g tst.c -o tst

-g :生成调试信息,将调试信息加载到可执行文件中

-o tst : 确定输出文件的名称为 tst ,默认为 a.out , 不可与源文件重名

打断点:

b n             // b 代表break , n 代表行号。在某一行打断点

b function   // function 函数,在某个函数处打断点

info b         // 打印断点信息

运行程序:

r    // run

以上程序停在了断电处

打印变量值:

p  i      // 打印变量 i 的值

查看函数堆栈:

bt   //

清除程序断点:

d    // 清除程序断点 delete

单步跟踪:

s  // 运行一行程序,且能够进入函数

n  // 运行一行程序,且不能进入函数

显示源程序:

list n  // 显示第n行周围的源程序

list function  // 显示函数名为 function 的函数的源程序

list  // 显示当前行后面的源程序

list  -   // 显示当前行前面的源程序

查看源代码内存:

info line  // 查看源代码在内存中的地址;后面跟 行号 、 函数名 、 文件名:行号 、 文件名:函数名

disassemble (disass)  // 查看源程序当前执行时的机器码

查看内存:

exmaine (x)  // 查看内存中地址的值

x/<n/f/u> <addr>
  n、f、u 是可选的参数。
  n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。
  f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令
  地址,那么格式可以是i。
  u 表示从当前地址往后请求的字节数,如果不指定的话,GDB 默认是4
  个bytes。u 参数可以用下面的字符来代替,b 表示单字节,h 表示双
  字节,w 表示四字节,g 表示八字节。当我们指定了字节长度后,
  GDB 会从指内存定的内存地址开始,读写指定字节,并把其当作一
  个值取出来。
  <addr>表示一个内存地址。

查看寄存器:

info r (registers)  // 查看寄存器的情况(除了浮点寄存器)

使用 GCC 调试程序的更多相关文章

  1. <转载>linux gcc编译器中使用gdb单步调试程序,程序不是顺序执行的。

    原文地址http://blog.csdn.net/abc78400123/article/details/6779108 在用gdb调试,使用s 或n单步执行程序时,发现程序不是按顺序运行的,有时莫名 ...

  2. Linux编译工具:gcc入门

    1. 什么是gcc gcc的全称是GNU Compiler Collection,它是一个能够编译多种语言的编译器.最开始gcc是作为C语言的编译器(GNU C Compiler),现在除了c语言,还 ...

  3. gcc -Wall -pedantic -ansi(转载)

    转载自R-G-Y-CQ的新浪博客 -Wall显示所有的警告信息 -Wall选项可以打开所有类型的语法警告,以便于确定程序源代码是否是正确的,并且尽可能实现可移植性. 对Linux开发人员来讲,GCC给 ...

  4. WINDOWS下如何安装GCC(转载http://nirvana.cublog.cn;作者:北斗星君(黄庠魁))

    第一章 在视窗操作系统下的GCC 第一节 GCC家族概览 GCC 是一个原本用于 Unix-like 系统下编程的编译器.不过,现在 GCC 也有了许多 Win32 下的移植版本.所以,也许对于许多 ...

  5. Linux——【转】gcc编译与gdb调试简要步骤

    原文:gcc编译与gdb调试简要步骤 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定义和include文件展开等工作:(.i) l 根据编译参数进行不同程 ...

  6. 用GDB调试程序(一)

    http://blog.csdn.net/haoel/article/details/2879 用GDB调试程序 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或 ...

  7. gcc编译与gdb调试简要步骤

    http://blog.chinaunix.net/uid-24103300-id-108248.html 一.Linux程序gcc编译步骤: Gcc编译过程主要的4个阶段: l 预处理阶段,完成宏定 ...

  8. gcc和g++

    一.GCC GNU编译器套件(GNU Compiler Collection)包括C.C++.Objective-C.Fortran.Java.Ada和Go语言的前端,也包括了这些语言的库(如libs ...

  9. gcc学习笔记

    1:第一个程序 : hello world #include <stdio.h> int main(void) { printf("Hello , world ! \n" ...

随机推荐

  1. 【工具】Git

    1.安装好Git以后,在开始菜单里找到Git->Git Bash,弹出一个命令窗口 2.设置邮箱 . 3.创建文件夹 4.创建版本库 5.将文件添加到缓存区中去 6.提交文件 7.检查是否还有文 ...

  2. 利用JAX-WS 开发web服务

    近日在学习Rogers Candenhead的第六版的<Java 入门经典>第22章.利用JAX-WS 开发web服务,简略总结而言主要包括以下几个步骤: 1.定义服务端点接口类: 主要就 ...

  3. POJ 3274 HASH

    题目链接:http://poj.org/problem?id=3274 题意+思路: 点击这里 补充:因为有减法运算,所以可能会造成运算后结果为负数,所以需要把结果统一转换成正数[不然数组下标访问不到 ...

  4. jQuery-事件以及动画

    事件: 1.//方法1 $(window).load(function(){ }) window.onload=function(){ } //方法2 function one(){ alert(&q ...

  5. Java与.NET随笔

    .NET与Java,因这两种技术的相似性,总是会让人拿来做比较,并且总有人想让二者一分高下,最后得出孰优孰劣的结论.由于本人先用.NET,后转Java,现在.NET与Java二者并用,所以对二者间的差 ...

  6. 点击 Run 之后发生了什么?

    这是我以前去链家网面试的一个题目,当时回答不够全面,现在看了2016 WWDC以及Sunnyxx iDev大会的分享之后,感觉对这个问题有了一些简单的认识,就来总结下.如果大家有补充,麻烦评论下哦! ...

  7. Python学习笔记10

      1.函数式编程   理论就来自lambda演算,虽然没有学过lisp,一直被其大名震撼. 特性: 函数是以一等公民 可以作为参数 可以作为返回值 具有闭包特性   1.1参数传递方式 一般参数传递 ...

  8. CSS-布局【1】-图片在div中垂直居中

    方法一:通过增加100%高度行内块居中对齐 <!DOCTYPE html> <html> <head> <meta name="viewport&q ...

  9. iOS学习33之可视化编程-StoryBoard

    1. storyBoard与xib 1> 概述 iOS下可视化编程分为两种方式: xib 和 storyboard 在使用 xib 和 storyboard 创建 GUI 过程中,以 XML 文 ...

  10. unity update 和fixedudpate

    但是Update会在每次渲 染新的一帧时被调用. 而FixedUpdate会在每个固定的时间间隔被调用,