我决定在我的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,它就能工作。
如果你知道如何解决这个问题,或者把它当作我可以接受的调试器限制.
发布于 2016-03-23 22:13:16
lldb目前不支持OS上的线程本地存储变量(不确定Linux)。您可以通过为您的TLS变量创建访问器函数,并在选择适当的线程之后调用这些变量来解决这一问题。
发布于 2022-05-23 20:56:08
对于我来说,在Linux上调试一个OpenMP块,只有在从GCC到Clang并安装LLVM库之后,我才能用LLDB打印TLVs。
https://stackoverflow.com/questions/36174473
复制相似问题