admin管理员组文章数量:1599543
break if
--------------------------------------------------------
用法: 支持简单变量的判断, 字符串变量可以化为字符来比较.
--------------------------------------------------------
break [break-args] if (condition)
举例:
break main if argc > 1
break myfunc if i % (j + 3) != 0
break test.c:34 if (x & y) == 1
break test.c:180 if (p_str == NULL && i < 0)
对简单变量进行判断没有问题
对字符串变量要当心!
break test.c:44 if strlen(mystring) == 0 // 应该可以
b opt.c:467 if strcmp(name,"n")==0,
设置时未提示错误,但运行时会提示错误:
'__strcmp_sse42' has unknown return type; cast the call to its declared return type
字符串比较strcmp 不能使用,
但可以改为:
b opt.c:467 if name[0]=='n' 通过
可见条件断点还是只支持简单的数据判断.不要奢求!
----------------------------------------
condition, 为已设断点添加条件
----------------------------------------
与break if类似,只是condition只能用在已存在的断点上。
condition <break_list> (condition)
例如:
cond 3 i == 3
将会在断点3上附加条件(i == 3)
断点中断后还可以执行commands, 只不过这些命令不能在顶层脚本中写甚是遗憾.
----------------------------------------
ignore, 为已设断点设置忽略次数.
----------------------------------------
用法:
ignore break_number count
例: ignore 2 100
表示忽略2号断点100次.
使用场景: 遇到一个for(;;) 无限循环,在很多loop后它从某一种条件下推出了循环.
想观察它最后一圈是如何退出的.
分2步走,
第1步:在loop 内设一个断点, 忽略这个断点10000次,运行,退出循环后查看loop的次数.
假如是n次(用info b 查看)
第2步: 重启动一次程序, 把这个断点设置为忽略n-1次, 然后可以单步执行程序,就可以
跟踪到loop 是如何退出的.
本文标签: 命令BreakgdbconditionIgnore
版权声明:本文标题:gdb break if命令,condition 命令,ignore命令 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1728323121a1154084.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论