c - lldb 无法打印 TLS 变量

标签 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,它就可以工作。

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

最佳答案

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

关于c - lldb 无法打印 TLS 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36174473/

相关文章:

c - 段错误 - 队列不会初始化

c - 在没有包含防护的情况下避免重新声明错误

c++ - 有什么理由不能将堆指针分配给数组吗?

ios - 如何在 lldb 中使用枚举

swift - 如何获取 JSON 格式的 Swift REPL 编译器错误

Swift框架在lldb中返回 'ambiguous use of'方法扩展

php - C 中的河豚 php?

c - 每行中数组的唯一元素

php - 连接PHP与mySQL的问题

c# - Debugger.Launch 和 Debugger.Break 之间的区别