将 python 函数添加到 gdb 中

我发现自己经常跳入 python 解释器来执行非常基本的字节转换,例如以下内容:


>>> ords = lambda s: [hex(ord(c)) for c in s]

>>> ords('Help')

['0x48', '0x65', '0x6c', '0x70']

有没有办法添加一个 python 函数,gdb这样我就可以输入ords('Help')它并调用上面的函数?如果是这样,我将如何/在哪里定义 python 函数?


相关于:https ://sourceware.org/gdb/onlinedocs/gdb/Python-API.html


catspeake
浏览 110回答 1
1回答

一只斗牛犬

是的,您可以使用 GDB Python API 来完成此操作。ords.py:import gdbclass ordinal(gdb.Command):    def __init__(self):        super(ordinal, self).__init__("ords", gdb.COMMAND_USER)    def invoke(self, argument, fromtty):        argv = gdb.string_to_argv(argument)        if len(argv) > 0:            argv[0] = argv[0].strip('()')            print([hex(ord(c)) for c in argv[0]])        else:            print("No arguments supplied")ordinal()在 GDB 中(我使用的是 GDB 8.3.1):(gdb) source ords.py(gdb) ords('Help')['0x48', '0x65', '0x6c', '0x70'] 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python