如何使用`expression`创建一个用于评估其参数的LLDB别名

时间:2012-04-17 20:52:46

标签: debugging command expression alias lldb

我正在尝试创建一个LLDB alias,使用参数expression)评估%1alias。我尝试了许多不同的语法组合,但似乎在%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别名?

3 个答案:

答案 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