如何将 gdb 便利变量设置为命令的结果

Pau*_*aul 6 python gdb

我在 Python 中有用户定义的 gdb 命令,其外观如下:

#!/usr/bin/env python
import gdb

class ConcatenateStrings(gdb.Command):
    def __init__(self):
        super(ConcatenateStrings, self).__init__("strcat", gdb.COMMAND_DATA)

    def invoke(self, arg, from_tty):
        args = arg.split(' ')

        var = args[0]
        result = args[1] + args[2]

        gdb.execute('set ${0} = "{1}"'.format(var, result))

ConcatenateStrings()
Run Code Online (Sandbox Code Playgroud)

(为了简单起见,删除了安全检查等)

他们期望有一个参数来指定结果应该分配给哪个变量,如下所示:

(gdb) source strcat.py
(gdb) strcat result a b
(gdb) print $result
ab
Run Code Online (Sandbox Code Playgroud)

这可行,但我很好奇是否可以将 gdb 命令的结果直接分配给便利变量。

基本上,有办法做到这一点吗?

(gdb) source strcat.py
(gdb) set $result = $(strcat a b)
(gdb) print $result
ab
Run Code Online (Sandbox Code Playgroud)