红联Linux门户
Linux帮助

gcc:GNU C Compiler

发布时间:2006-09-15 10:44:33来源:红联作者:译元
gcc支持的所有扩展名:

.a 静态对象库

gcc -c hellofirst.c hellosecond.c

ar -r libhello.a hellofirst.o hellosecond.o

.c 需要预处理的c语言源代码

.h c语言源代码的头文件

.i 无需预处理的c语言源代码。该类文件是编译过程的中间产物

gcc -E helloworld.c -o helloworld.i

.o 目标文件,格式和应用的连接相符。该类文件是编译过程的中间产物

gcc -c helloworld.c

.s 汇编语言代码(assembly language code)。该类文件是编译过程的中间产物

gcc -S helloworld.c -o helloworld.s

.so 共享对象库(shared object library)

gcc -c -fpic hellofirst.c hellosecond.c

gcc -shared hellofirst.c hellosecond.c -o hello.so

gdb调试器

1 调试信息格式

为了能够调试程序,有必要将程序相关信息包含到目标文件中。调试器利用这些信息,可将源代码和可执行代码联系起来,并按格式提供程序有关信息,以此可以确切了解到程序的动作。

这种保存在目标文件中的信息有多种格式: STABS,DWARF,COFF,XCOFF。

2 调试信息级别

为使调试器可以连接二进制可执行代码和源代码---需要显示可以读懂的信息---编译程序必须只是将这些信息包含到目标代码中。可通过设置命令行选项实现它,指定包含信息的数目和类型--- -g[level]

1 该级别在目标代码中插入的信息最少。虽然这些信息足够跟踪函数调用和检查全局变量,但没有可执行代码和源代码相关信息,也没有足够信息可以检查局部变量

2 这是默认级别。该级别包括级别1的所有信息,而且还添加了从源代码行到可执行代码相关的必要信息,以及局部变量的名字和位置

3 该级别包括级别1和级别2的所有信息,此外还加入了额外的信息,包括预处理宏定义

gdb命令

awatch 设置查看点(watch point),无论何时指定位置的值被读或写了,程序执行都会停止。参见rwatch和watch

backtrace 向后打印出栈的内容,显示将程序带到当前位置的函数调用和参数值。该命令可简写为bt

break 设置断点,程序运行会在指定行或函数名处中断

clear 清除某行或函数上的断点,开始是由break命令设置的

continue 继续程序的执行,开始是由调试器中断的

Ctrl-C 中断运行程序,就好像当前行设置了断点一样

disable 禁止按照数字列出的断点

display 每次程序中断时,显示指定表达式的值

enable 按照数字激活断点

finish 继续运行被调试器中断的程序,继续运行直到当前函数返回

ignore 设置断点的忽略数目。例如,命令ignore 4 23需要断点4运行23次才能起到中断的作用

info breakpoints 列出状态和描述,包括所有断点的号码

info display 列出状态和描述,包括前面定义的display命令的号码

kill 杀掉正在运行的当前进程

list 列出10行代码。如果命令中没有参数,列出当前行后的10行。如果指定函数,列出该函数的10行。如果指定行号,行号会在列表中间

load 将指定的可执行文件动态载入gdb,准备调试该程序

next 继续运行被中断的程序,依次运行源代码中的指令,但将函数调用看作是一行代码,不会停止,直到函数返回

nexti 继续运行被中断的程序,运行一条汇编指令代码,但将函数调用看作是一行代码,不会停止,直到函数返回

print 立即显示指定表达式的值

ptype 显示指定项目的类型

return 强制从当前函数立即返回

run 启动程序,从开始位置运行程序

rwatch 设置查看点,只要读到了指定位置,就可以中断运行。

set 将指定变量值赋给表达式。例如,set nval = 54会将值54保存到nval在内存中的位置

step 继续执行中断的程序,依次运行源代码中的指令。它会进入被调函数

stepi 继续执行中断的程序,依次运行汇编语言的指令。它会进入被调函数

txbreak 在当前函数出口设置临时断点(只起一次作用)。参见xbreak

undisplay 删除数字指定的display表达式

watch 设置查看点,只要写到了指定位置,就可以中断程序运行。

whatis 打印数据类型和指定表达式的值

xbreak 在当前函数出口设置断点。
文章评论

共有 1 条评论

  1. duncan.king 于 2006-09-19 16:32:21发表:

    好。