2017-05-09 30 views
3

我想用DS-5 Streamline profiler來剖析我的代碼。在文檔中提到爲了能夠看到調用堆棧,我們需要編譯帶有編譯選項-fno-omit-frame-pointer的代碼。這個選項在gcc中有。 對於clang是否還有等價選項?-fno-omit-frame-pointer clang的等價編譯器選項

-fno-omit-frame-pointer不適合我鐺聲。

我也嘗試將編譯器優化級別設置爲0,但仍然沒有在流水線中獲取調用堆棧。

+0

你也使用'-g'或'-ggdb'或類似的嗎? – jotik

+0

在我的目標上運行剝離共享庫。但是,在分析捕獲時,我提供了未被刪除的代碼,它們具有調試符號(使用-g編譯) –

回答

0

它看起來像DS-5是一個ARM的東西,所以這可能不相關,但我遇到了類似的問題,嘗試使用Linux的perf profiler從clang編譯的可執行文件中獲得良好的堆棧跟蹤。

的問題結束了的是,X86-64上的Linux至少需要鏘爲了獲得相同的行爲既-fno-omit-frame-pointer-mno-omit-leaf-frame-pointer是GCC只-fno-omit-frame-pointer給出。看到這個LLVM錯誤:"Need both -fno-omit-frame-pointer and -mno-omit-leaf-frame-pointer to get a fp on linux on a leaf function"