lldb 无法打印 TLS 变量
lldb cannot print TLS variable
我决定在我的 C 项目中使用 TLS 变量来定义一些应该在整个线程范围内有效的变量。
这是我的声明:
static __thread char log_username[100];
但是,出于某种原因,lldb 调试器无法显示它们,原因如下:
(lldb) print log_username[2]
error: Couldn't materialize: couldn't get the value of variable log_username:
No TLS data currently exists for this thread.
Errored out in Execute, couldn't PrepareToExecuteJITExpression
调试器指出 TLS 数据当前不可用,但如果我使用简单的 printf,它就可以工作。
知道如何解决这个问题,或者只是将其视为我可以接受的调试器限制...
lldb 当前不支持 OS X 上的线程局部存储变量(不确定 Linux。)您可以通过为 TLS 变量创建访问器函数并调用它们来解决此问题选择合适的线程后。
对于我 Linux 调试 OpenMP 块,我只能在从 GCC 更改为 Clang 并安装 LLVM 库后才能使用 LLDB 打印 TLV
我决定在我的 C 项目中使用 TLS 变量来定义一些应该在整个线程范围内有效的变量。
这是我的声明:
static __thread char log_username[100];
但是,出于某种原因,lldb 调试器无法显示它们,原因如下:
(lldb) print log_username[2]
error: Couldn't materialize: couldn't get the value of variable log_username:
No TLS data currently exists for this thread.
Errored out in Execute, couldn't PrepareToExecuteJITExpression
调试器指出 TLS 数据当前不可用,但如果我使用简单的 printf,它就可以工作。
知道如何解决这个问题,或者只是将其视为我可以接受的调试器限制...
lldb 当前不支持 OS X 上的线程局部存储变量(不确定 Linux。)您可以通过为 TLS 变量创建访问器函数并调用它们来解决此问题选择合适的线程后。
对于我 Linux 调试 OpenMP 块,我只能在从 GCC 更改为 Clang 并安装 LLVM 库后才能使用 LLDB 打印 TLV