【Linux】基础开发工具gdb

【Linux】基础开发工具gdb
Linux基础开发工具gdb1、Debug和release程序的发布方式有两种Debug和release模式Debug模式是开发者模式用户最终用的是release在Debug模式下因为增加了调试信息所以可执行文件体积较大gcc/g 默认编译出来的程序是Release 版本如果想在Debug模式下得到可执行程序那么需要输入gcc mycmd.c-o mycmd-g通过readelf mycmd-debug -S | grep debug指令可以将二进制文件中与Debug有关的部分过滤出来打印出mycmd-debug在Debug模式下的信息2、gdb常用指令mycmd.c#includestdio.hintSum(ints,inte){intresult0;intis;for(s;ie;i){resulti;}returnresult;}intmain(){intstart1;intend100;printf(I will begin\n);intnSum(start,end);printf(running done, result is: [%d~%d]%d\n,start,end,n);return0;}输入gdb进入gdb环境输入q退出输入list或l显示源代码输入l num或list num查看文件第num行附近代码输入run或r运行程序打断点时使用gdb不方便查看断点以下使用cgdb进行调试输入b 行号设置断点输入info b 行号查看所有断点信息输入d num删除断点n或next逐过程单步执行面部进入函数内部s或step逐语句单步执行进入函数内部断点为第18行输入p 变量打印变量或表达式的值p为单次打印单步执行不会自动刷新打印变量的值不会变化display 变量名跟踪监视程序每次暂停自动打印变量undisplay num取消对先前变量的跟踪输入until x跳转至x行输入finish执行到当前函数结束暂停在函数调用处打印返回值$1是 gdb 保存返回值的变量5050就是 Sum 函数 return 带回的结果输入continue或c从当前断点直接运行到下一个断点disable breakpoints禁用断点enable breakpoints启用被禁用的断点backtrace或bt查看函数调用栈info locals查看当前函数局部变量set var修改变量的值