经典编译参数:
# cc -g -o xx xx.c
或者
# cc xx.c -g -o xx
如果调试不是进程总的程序
可以直接
#gdb 程序名即可
# i 打印行号
#break 行号
#r 重新开始调试
利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。
(gdb) set args –b –x
(gdb) show args
可以先-p上程序 再加参数。
给GDB传递参数
int main( int argc, char* argv[] )
if( argc <= 2 ) {
printf( "usage: %s ip_address port_number\n", basename( argv[0] ) );
return 1;
}
const char* ip =argv[1];
int port = atoi( argv[2] );
#ps aux 查进程
#gdb -p pid 注意千万不要在这后增加参数 没用的
#set args localhost 7777
#break main
#r
#s
二:编译选项
要使用gdb调试必须使用-g编译选项,同时还要启用O0,避免O2优化。
方法一:
# ./configure CFLAGS="-g -O0" --prefix=/usr/local/xxx
方法二:
# make CFLAGS="-g -O0"
方法三:
直接修改Makefile文件的的CFLAGS选项,例如nginx的Makefile
CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g
注意:如果已经生成这样的Makefile文件以后,如果继续使用# make CFLAGS="-g -O0" 那么编译的时候就会
cc -c -g -g -O0
可见make 后的CFLAGS是拼在MakeFile文件的CFLAGS后的,避免重复-g 可以 make CFLAGS="