GCC和GDB

一、GCClinux

  linux下,gcc 是指gcc c编译器。咱们从一个程序到一个可执行文件来讲明gcc的几个选项:数组

  若是你写的代码是hello.c,你的程序将经历下面的步骤到达硬盘或者内存成为可执行文件。ide

gcc -E main.c -o main.i //第一步:hello.c(文本)通过预编译生成hello.i(文本)函数

gcc -S main.i -o main.S //第二步:hello.i(文本)通过编译器生成hello.s(汇编。文本)spa

gcc -c main.c -o main.o //第三步:hello.s(文本)通过汇编器生成hello.o(二进制)。调试

gcc main.o -o main    //第四步:hello.o(二进制)通过连接器生成hello可执行文件。orm

wKiom1noBM2hp6S6AACH8TfOt6I961.png

通常状况下用gcc main.c -o main 就能够直接生成可执行文件main。blog

二、gdb(一些基本的调试命令)内存

须要调试的程序在编译的时候要加 -g 选项,程序才能进行调试
get

wKiom1noBwiiWOxaAADzyX-Rm7k841.png

list 显示源文件:

          list 没有参数,显示当前行以后或周围的10多行

          list start,end  显示从行号start到end之间的代码行。

wKiom1noCd7DSgt0AABTaqHGwAQ473.png

print 查看运行时的数据

    print i    显示当前变量i的值

    print &i   显示变量i的存放地址

    print array@1   显示从array(数组名)开始的5个值

    print array[2]@3  显示从array第二个元素开始的3个数组元素的值

    whatis i       显示变量i的数据类型

设置断点 break

   break linenum    在当前文件指定行linenum处设置断点

    break function   在当前文件函数function的入口处设置断点

显示断点 info  info breakpoints/break/watchpoints  [num]

单步跟踪 step [N]  若是遇到函数调用,而且该函数编译时有调试信息,则会进入该函数内执行。

       next [N]  遇到函数调用时,执行整个函数。

连续执行continue 从当前行开始,连续执行到下一个断点处,或者到达该程序结束。命令中能够给出一个数字N,忽略其后N-1次断点。

运行程序 run。

clear(清除全部已定义的断点),delete(删除全部断点,后面可给出断点号码,多个断点用空格分开)

3c2c56c4b7616619b505d3ebc7cc909c.png

6857b05b227a7a81f1350532880fa0e2.png

  最后,补充一句上面的函数均可以用首字母简写

相关文章
相关标签/搜索