4

我正在尝试创建一个 LLDB alias,它expression使用参数 ( %1) 对alias. 我尝试了很多很多不同的语法组合,但似乎任何%1在 an中使用的东西都expression无法解析。

(lldb) version
LLDB-112.1

这按预期工作:

(lldb) expr (char*) strdup(argv[1])
(char *) $23 = 0x000000010061c090 "--calc"

当我创建一个alias包含%1示例时失败。

(lldb) command alias dup expr (char*) strdup(%1)
(lldb) dup argv[1]
error: expected expression
error: 1 errors parsing expression

如何创建一个 LLDB 别名来评估其参数expression

4

3 回答 3

3

要使表达式中的参数起作用,请使用命令正则表达式而不是别名,如下所示:

command regex dup 's/(.+)/expr (char*) strdup(%1)/'

有关更多详细信息,请参阅此答案

于 2012-08-30T10:58:58.527 回答
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 构建 153

于 2012-06-28T04:10:31.800 回答
0

我已经玩了很多 %1 别名,但还没有运气。这是我能来的最接近的,它并不美妙:

[.lldbinit]

command alias foo expr fooFunction(

然后在运行调试器时,以下命令实际上会调用带有输入栏的函数 fooFunction:

(lldb) foo bar)

无与伦比的近括号不是错字。它需要在那里匹配别名中的开放括号。

于 2012-05-16T19:54:19.487 回答