lldb无法打印TLS变量

时间:2016-03-23 09:38:27

标签: c debugging lldb

我决定在我的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,它就可以工作。

知道如何解决这个问题,或者只是将其视为我可以使用的调试器限制......

1 个答案:

答案 0 :(得分:2)

lldb当前不支持OS X上的线程本地存储变量(不确定Linux。)您可以通过为TLS变量创建访问器函数并在选择适当的线程后调用它们来解决此问题。