我正在尝试创建一个LLDB alias
,使用参数expression
)评估%1
到alias
。我尝试了许多不同的语法组合,但似乎在%1
中使用expression
的任何内容都无法解析。
(lldb) version
LLDB-112.1
这可以按预期工作:
(lldb) expr (char*) strdup(argv[1])
(char *) $23 = 0x000000010061c090 "--calc"
当我创建包含alias
的{{1}}时,示例失败。
%1
如何创建使用(lldb) command alias dup expr (char*) strdup(%1)
(lldb) dup argv[1]
error: expected expression
error: 1 errors parsing expression
评估其参数的LLDB别名?
答案 0 :(得分:3)
要使表达式中的参数有效,请使用命令regex 而不是别名,如下所示:
command regex dup 's/(.+)/expr (char*) strdup(%1)/'
有关详细信息,请参阅this answer。
答案 1 :(得分:0)
我已经玩过%1个别名,但还没有好运。这是我能来的最接近的,并不是很棒:
[lldbinit]
command alias foo expr fooFunction(
然后在运行调试器时,以下命令实际上将使用输入栏调用函数fooFunction:
(lldb) foo bar)
那种无与伦比的亲密关系不是一个错字;它需要在那里匹配来自别名的开放式paren。
答案 2 :(得分:0)
试 命令别名dup expr - (char *)strdup($ 1); 然后你会看到
(lldb) dup "2387987"
(const char [8]) $5 = "2387987" {
(const char) [0] = '2'
(const char) [1] = '3'
(const char) [2] = '8'
(const char) [3] = '7'
(const char) [4] = '9'
(const char) [5] = '8'
(const char) [6] = '7'
(const char) [7] = '\0'
用于lldb build 153