簡體   English   中英

我如何從llvm pass中檢查是否已設置-g標志(啟用調試信息)

[英]How can I check that -g flag (debug info enable) was set, from llvm pass

如何從正在編寫的llvm傳遞中檢查是否已設置-g標志(調試信息啟用)? 我只是想看看是否有辦法通過我的密碼獲取命令行選項,包括-g。

當Clang生成LLVM IR時,它不會直接記錄使用了哪些命令行選項。 但是,您可以通過檢查是否存在調試信息來輕松檢查調試信息是否已啟用。

我能想到的最簡單的方法是檢查是否存在!llvm.dbg.cu命名元數據節點:

bool wasCompiledWithDebugInfo(const Module& M) {
  return M.getNamedMetadata("llvm.dbg.cu") != NULL;
}

在大多數情況下,這應該起作用。有一個陷阱-一個Module實際上可能由鏈接在一起的多個編譯單元組成,有些通過調試信息進行編譯,而有些則不是。 如果您不在乎,那么您就會找到答案。

如果您確實在乎,則需要更具體地說明您真正想要實現的目標。 例如,如果您關心某個特定函數是否已使用調試信息進行編譯,則應直接檢查該函數(通過搜索描述該函數DISubprogram元數據 ),而不是詢問編譯單元。

暫無
暫無

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

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