與-fsanitize=memory
編譯時,運行程序時得到WARNING: Trying to symbolize code, but external symbolizer is not initialized!
。如何初始化外部符號器?如何初始化LLVM的外部符號器?
9
A
回答
12
我使用MSAN_SYMBOLIZER_PATH=$(which llvm-symbolizer-3.4) ./a.out
解決我自己的問題。問題是Ubuntu後綴版本號,但二進制文件不知道。當然,在使用記憶清潔劑時,您需要使用MSAN
而不是ASAN
。
2
你應該能夠設置ASAN_FILTER環境變量指向一個符號器,但我無法讓它工作。但是,事實之後,您可以將stderr重定向到符號化程序。您仍然會收到關於未初始化符號的警告,但文件名和行號將是正確的。
您可以使用asan_symbolizer.py作爲外部符號器。從該鏈接下載它(到/ tmp爲例)後,調用你的程序像這樣(在bash,在這個例子中):
./myprogram 2>&1 | /tmp/asan_symbolize.py | c++filt
0
當我在不包含clang
安裝的Linux機器上運行程序調試版本(編譯爲-fsanitize=address
)時,我收到了這樣的警告。從安裝clang
後,問題消失。
0
在我的Ubuntu系統上,問題是LLVM的工具安裝在/usr/bin
的版本後綴(如llvm-symbolizer-4.0
),並且殺毒工具正在尋找它們而沒有版本後綴。
LLVM還將其二進制文件安裝到例如/usr/lib/llvm-4.0/bin
; /usr/bin
下的工具實際上只是符號鏈接。所以一個簡單的解決方案是在使用消毒劑時將適當的/usr/lib/llvm-*/bin
目錄添加到您的路徑中。
相關問題
- 1. LLVM IR字符串初始化
- 2. LLVM是否爲初始類型初始化局部變量?
- 3. llvm 4.0.0初始化AliasSetTracker類
- 4. 外部引用初始化
- 5. Wicket - 初始化外部類
- 6. 如何從外部服務器初始化文件下載?
- 7. 將@InitBinder初始化外部化爲WebBindingInitializer
- 8. 如何用c語言初始化寄存器無符號長
- 9. 初始化與{}符號一個CGPoint的
- 10. VHDL /如何初始化我的信號?
- 11. 解析的外部符號初始化指向一個模板時
- 12. LNK 2001:無法解析的外部符號,同時初始化靜態成員
- 13. 信號初始化
- 14. 從外部初始化一個函數
- 15. 控制/初始化外部類[AS3]
- 16. __init__外部初始化字段
- 17. ORMLite初始化外部收集
- 18. 外部JavaScript數組初始化
- 19. 初始化外部php文件 - javascript/jQuery
- 20. 初始化陣列外部子程序
- 21. 如何初始化項目外部的文字瀏覽器點擊監聽器
- 22. Git初始化符號鏈接
- 23. 初始化字符串用雙引號
- 24. as3符號變量尚未初始化
- 25. 外部類中的靜態初始化器是否保證在內部枚舉初始化之前運行?
- 26. 的ThreadState例外初始化
- 27. 如何初始化一個無符號的long long類型?
- 28. 初始化dll內部的記錄器
- 29. 內部類的靜態初始化器?
- 30. 對象初始化器逗號查詢