例如:
dprintf main,"hello\n"
run
生成的输出相同:
break main
commands
silent
printf "hello\n"
continue
end
run
是否有显著优势,使用dprintf
过commands
,例如,它是相当快的(如果是的话,为什么?),还是有一些不同的功能?
或者是它主要是一个方便的命令?
资源
在7.9.1源, breakpoint.c:dprintf_command
,它定义dprintf
,来电create_breakpoint
这也是什么break_command
电话,所以他们似乎都使用相同的底层机制。
的主要区别在于, dprintf
经过dprintf_breakpoint_ops
结构,因而具有不同的回调和在被初始化initialize_breakpoint_ops
。
dprintf
命令字符串很像的商店列表commands
的命令,这取决于设置。 他们是:
- 设定在
update_dprintf_command_list
- 其中一个被称为后的
type == bp_dprintf
检查内部init_breakpoint_sal
- 它得到的所谓
create_breakpoint
。
当到达断点:
-
bpstat_stop_status
被调用并调用b->ops->after_condition_true (bs);
为达到断点 -
after_condition_true
为dprintf
是dprintf_after_condition_true
-
bpstat_do_actions_1
运行命令