lldb 无法在调试代码中打印值
lldb cannot print values in debug code
在 lldb 中打印一个值时,出现以下错误
error: no member named 'rec' in namespace '$__lldb_local_vars'
我的代码是用-g编译的。为什么 lldb 无法打印值?
$__lldb_local_vars
解决了 clang 为 lldb 的表达式解析器提供的名称查找功能中的一些问题。该 hack 试图通过将局部变量注入命名空间,然后将其导入表达式中,将局部变量提升到名称查找的头部(在本地可见 class 和命名空间查找之前)。这有一些性能问题,而且它也很脆弱,因为它需要实现所有可见的局部变量。我们做了很多工作来删除我们可以告诉我们将无法实现的局部变量,但它仍然不能非常可靠地工作。
这个 hack 在 Apple 发布的所有 lldb 中默认关闭,并通过设置控制:
(lldb) set list target.experimental.inject-local-vars
target.experimental.inject-local-vars -- If true, inject local variables explicitly into the
expression text. This will fix symbol resolution
when there are name collisions between ivars and
local variables. But it can make expressions run
much more slowly.
您可以使用 settings show
显示此设置的当前值,并使用 settings set
更改它。
如果您可以提供一个显示此失败的示例,那么向 llvm 错误报告程序提交错误会很有帮助:https://bugs.llvm.org。
在 lldb 中打印一个值时,出现以下错误
error: no member named 'rec' in namespace '$__lldb_local_vars'
我的代码是用-g编译的。为什么 lldb 无法打印值?
$__lldb_local_vars
解决了 clang 为 lldb 的表达式解析器提供的名称查找功能中的一些问题。该 hack 试图通过将局部变量注入命名空间,然后将其导入表达式中,将局部变量提升到名称查找的头部(在本地可见 class 和命名空间查找之前)。这有一些性能问题,而且它也很脆弱,因为它需要实现所有可见的局部变量。我们做了很多工作来删除我们可以告诉我们将无法实现的局部变量,但它仍然不能非常可靠地工作。
这个 hack 在 Apple 发布的所有 lldb 中默认关闭,并通过设置控制:
(lldb) set list target.experimental.inject-local-vars
target.experimental.inject-local-vars -- If true, inject local variables explicitly into the
expression text. This will fix symbol resolution
when there are name collisions between ivars and
local variables. But it can make expressions run
much more slowly.
您可以使用 settings show
显示此设置的当前值,并使用 settings set
更改它。
如果您可以提供一个显示此失败的示例,那么向 llvm 错误报告程序提交错误会很有帮助:https://bugs.llvm.org。