8sum+=i; 9} 10returnsum; 11} 12 13 14main() 15{ 16inti; 17longresult=0; 18for(i=1;i<=100;i++) 19{ 20result+=i; 21} 22 23printf("result[1-100]=%d\n",result); 24printf("result[1-250]=%d\n",func(250)); 25} 编译生成执行文件:(Linux下) hchen/--otst 使用GDB调试: hchen/test>gdbtst<----------启动GDB Copyright2002FreeSoftwareFoundation,Inc. GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouare etochangeitand/ordistributecopiesofitundercertainconditions. Type"showcopying"toseetheconditions. "showwarranty"fordetails. ThisGDBwasconfiguredas"i386-suse-linux"... (gdb)l<--------------------l命令相当于list,从第一行开始例出原码。 1#include 2 3intfunc(intn) 4{ 5intsum=0,i; 6for(i=0;i7{ 8sum+=i; 9} 10returnsum; (gdb)<--------------------直接回车表示,重复上一次命令 11}12 13 14main() 15{ 16inti; 17longresult=0; 18for(i=1;i<=100;i++) 19{ 20result+=i; (gdb)break16<--------------------设置断点,在源程序第16行处。 Breakpoint1at0x8048496:,line16. (gdb)breakfunc<--------------------设置断点,在函数func()入口处。 Breakpoint2at0x8048456:,line5. (gdb)infobreak<--------------------查看断点信息。 NumTypeDispEnbAddressWhat :16 :5 (gdb)r<---------------------运行程序,run命令简写 Startingprogram:/home/hchen/test/tst Breakpoint1,main():17<----------在断点处停住。 17longresult=0; (gdb)n<---------------------单条语句执行,next命令简写。 18for(i=1;i<=100;i++) (gdb)n 20result+=i; (gdb)n 18for(i=1;i<=100;i++) (gdb)n 20result+=i; (gdb)c<---------------------继续运行程序,continue命令简写。 Continuing. result[1-100]=5050<----------程序输出。 Breakpoint2,func(n=250):5 5intsum=0,i; (gdb)n 6for(i=1;i<=n;i++) (gdb)pi<---------------------打印变量i的值,print命令简写。 $1=134513808 (gdb)n 8sum+=i; (gdb)n 6for(i=1;i<=n;i++)(gdb)psum $2=1 (gdb)n 8sum+=i; (gdb)pi $3=2 (gdb)n 6for(i=1;i<=n;i++) (gdb)psum $4=3 (gdb)bt<---------------------查看函数堆栈。 #0func(n=250):5 #10x080484e4inmain():24 #20x400409edin__libc_start_main()from/lib/ (gdb)finish<---------------------退出函数。 Runtillexitfrom#0
gdb的一点学习资料 来自淘豆网m.daumloan.com转载请标明出处.