9

我正在使用lldb命令行来调试一个简单的 C 程序。

在我工作的机器上,我能够对符号名称使用制表符完成。例如,如果我输入“b ma” then Tab,它会自动完成到“b main”。其他功能也是如此。

但是,我无法在我的笔记本电脑上使用此功能,因为在光标之后插入了一个实际的选项卡(ASCII 值 9)。两台机器都运行 10.8.4 并具有最新的 Xcode。

有任何想法吗?

4

1 回答 1

7

我认为您正在两个系统之一上运行 gdb。

lldb 可以完成制表符完成——它可以完成比 gdb 更复杂的制表​​符完成——但您必须使用 lldb 命令的规范形式才能使其工作。您使用的b命令是别名(正则表达式别名 - 尝试解析断点命令并执行正确操作的正则表达式列表),它没有为 lldb 选项卡完成引擎提供足够的上下文信息来执行任何操作.

相反,如果你要这样做

(lldb) br s -n ma<TAB>

它会自动完成。当然,这是 的缩写形式breakpoint set --name

当您意识到 lldb 可以制表完成许多不同的参数时,lldb 的聪明才智开始发挥作用——file将完成“ breakpoint set --filefile Tab”作为文件名。 breakpoint set --selector将自动完成选择器名称。 breakpoint set --shlib(将断点限制为仅在特定的 dylib/framework/binary 中设置)将使用 dylibs/frameworks/binaries 列表自动完成。

在将来的某个时候,我们希望使用别名命令来完成制表符,b但还没有人有时间解决这个问题。

于 2013-08-15T03:23:29.857 回答