我试着注册一台漂亮的打印机。当我在gdb命令提示符下输入"info pretty-printer“时,它就会显示出来。但是这有什么用呢?在注册一台漂亮的打印机之前,我必须做我所做的一切。例如,在注册之前,如果我获取了漂亮的打印机,然后使用"command-name expr“调用了调用方法,那么在注册之后我仍然会做同样的事情。注册给我漂亮的打印机带来了什么价值。
发布于 2016-08-06 03:38:05
如果你的漂亮打印机有一个相关的查找函数,gdb print命令就可以调用你的漂亮打印机,而不需要显式地调用你的漂亮打印机提供的命令。This page包含一个示例,它使用gdb.printing模块通过gdb.printing.RegexpCollectionPrettyPrinter将两个漂亮的打印机与两个正则表达式关联起来。也许您还可以通过搜索gdb.pretty_printers的内容找到本机示例;我的示例包括一个libstdcxx.v6.printers.Printer对象和一个gdb.printing.RegexpCollectionPrettyPrinter对象;在我的系统中,前者是用/usr/share/gcc-4.8/python/libstdcxx/v6/printers.py定义的。
发布于 2016-08-06 22:49:13
在注册之前,如果我获取了漂亮的打印机,然后使用"command-name expr“调用了invoke方法,那么在注册之后我仍然会做同样的事情。
从这句话中,听起来你把命令和漂亮的打印机搞混了。命令实现有一个invoke方法。漂亮的打印机就不会。此外,命令是从gdb命令行调用的,比如(gdb) command-name,而只有在打印一个值时,比如通过print mumble (或者在其他时候,比如在回溯期间打印参数的值时),才会调用漂亮的打印机。
将您的命令注册为一个漂亮的打印机是没有用的,而且可能只会偶尔导致打印Python异常。
https://stackoverflow.com/questions/38793246
复制相似问题