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 在当前函数出口设置断点。
duncan.king 于 2006-09-19 16:32:21发表:
好。