簡體   English   中英

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM