1.条件断点
有一种断点仅在特定条件下中断:
格式: break 断点 if 条件
删除指定断点的触发条件:
格式: condition 断点编号
给断点添加触发条件:
格式: condition 断点编号 条件
2.反复执行
在编号指定的断点,监视点(watchpoint),捕获点(catchpoint)忽略指定的次数。
格式:
ignore 断点编号 次数
continue 次数
step 次数
stepi 次数
next 次数
nexti 次数
3.断点命令
断点命令commands 可以定义在断点中断后自动执行的命令。
格式:
commands 断点编号
命令
end
4.举例
(gdb) b SnoopTaskInit if u4Instance>0
No symbol "u4Instance" in current context.
(gdb) b SnoopTaskInit if gu4SnoopTrcInstId>0
Breakpoint 1 at 0x85b1350: file /home/toney/work/project/dragon/core/code/future/snooping/snpcore/src/snpmain.c, line 244.
(gdb) commands
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>printf("gu4SnoopTrcInstId:%d\n",gu4SnoopTrcInstId);
>end
(gdb)
5. 值的历史
- 最后的值可以直接用 $ 输出。
- show value可以显示历史中最后10个值。
举例:
(gdb) p gu4SnoopTrcInstId
$1 = 0
(gdb) p &gu4SnoopTrcInstId
$2 = (UINT4 *) 0x9c39e84 <gu4SnoopTrcInstId>
(gdb) p &SnoopMainStartModule
$3 = (INT4 (*)(void)) 0x85b3770 <SnoopMainStartModule>
(gdb) p $
$4 = (INT4 (*)(void)) 0x85b3770 <SnoopMainStartModule>
(gdb) show values
$1 = 0
$2 = (UINT4 *) 0x9c39e84 <gu4SnoopTrcInstId>
$3 = (INT4 (*)(void)) 0x85b3770 <SnoopMainStartModule>
$4 = (INT4 (*)(void)) 0x85b3770 <SnoopMainStartModule>
(gdb)
6.命令定义
- define 命令可以自定义命令。
- document 命令可以给自定义的命令添加说明。
- help 命令名 可以查看定义的命令。
举例:
(gdb) define showvalue
Type commands for definition of "showvalue".
End with a line saying just "end".
>p gu4SnoopTrcInstId
>end
(gdb) document showvalue
Type documentation for "showvalue".
End with a line saying just "end".
>show gu4SnoopTrcInstId
>end
(gdb)
(gdb) showvalue
$1 = 0
(gdb) help showvalue
show gu4SnoopTrcInstId
(gdb)