软件调试GDB笔记.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件调试GDB笔记

断点break 加普通断点: break(b) break 当前位置加断点 break funcName break lineNum break filename:lineNum break filename:funcName break +offset break –offset基于当前行号 break *address 虚拟地址。 用于源代码不可用或共享库。 加临时断点 tbreak(停一次后 删除此断点) 加条件断点 运算符:( = == != = || | ^ + - x / %) break main if argc 1 break main if (argc == 1) break 180 if string==NULL i 0 自己的函数: break test.c:myFunc if (func(1)==1) 库函数: break 44 if strlen(myStr)==0 先break后加条件: cond 3 i==3 删除条件 保留断点 cond 3 查看断点:info breakpoints (i b) 禁用:disable 1 disable 1 3 4(多个列表) (ID:1, 2,3 ) 不带参数禁用所有 启用:enable 1 enable 1 3 4(多个列表) 不带参数启动所有 enable once 1 删除断点: delete 1(ID号,1,2,3… ) clear(参数和break一样) GDB 当前活动文件 改变: list 别的文件 运行在别的文件的代码里 在别的文件的断点里 gdbinit启动文件 断点命令列表:在断点处自动执行命令, 不用手动敲 格式: command 1 xxxxxx end 例子: command 1 silent //去掉gdb提示信息 如哪行,下一行的源码 printf continue end define命令创建宏:用一个宏代表多句命令,多处可以共用。 define print_and_go printf $arg0, $arg1 continue end //必须以end结束 使用宏: print_and_go “xxxxx %d\n”n 查看所有宏: show user 断点处恢复执行 单步调试 next(n): 函数不进入 next 3 相当于键入3次next step(s):函数进去 step 3 continue(c): 继续运行直到下个断点 continue n(忽略n个断点) finish:结束当前函数 until:退出循环。可能要多敲几个命令。 监视点(watch) 当某个值或者某个表达式变化时 暂停。 断点是某个位置关联,监视点和位置无关。 只能在变量作用域内使用。 只能监视单线程的变量。 一般使用方法:先在一个函数内break, 这时变量在作用域内,再watch。 加监视点: watch i watch (i | j 12) 检查设置变量 主动打印 print(p) 每次暂停时都打印:display(disp) undisplay(undisp) 指定格式: /x /c /s /f display: 加显示点: disp uiRet 禁用 dis disp 1 启用 enable disp 1 删除 undisp 1 打印所有的局部变量:info locals 打印当前函数参数:info args 打印值历史:p $1 值历史被标为$1 $2 $3 改变某个变量: set x = 12 改变程序参数: set args 1 2 3(重新run才有效) 打印结构体信息: p stXXX p *pstXXX(结构体指针) 打印数组: p x (int x[10];) 动态malloc: int *pi = malloc(25 * 4); p pi (打印pi的地址) p *pi (打印第一个元素的值) p (int [25])*pi (强制转换,打印全部25个元素) p *pi@25 (打印全部25个元素) 打印结构体类型的定义: ptype stXXX 方便变量:调试时自定义变量 set $i = 0 直接调用函数: call printTree(root) 可以在断点处调用函数来检查结果。 如果每次进断点都要检查,可以使用commands。

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档