2012-02-21 61 views
2

我嘗試使用gdb來調試共享庫gdb調試共享庫<優化掉了>問題

在我開始越來越<optimized out>所有局部變量的共享庫步入函數時(書面在C)

我試着鏈接到一個共享庫(.so)鏈接到一個靜態庫(.a),確保在Makefiles中沒有設置優化,即-O0和-g設置爲庫和庫線束

奇怪的是我以前能夠調試它,<optimized out>只出現最近但我不知道爲什麼,例如我能夠看到本地變量最初是

我知道這是一個模糊的問題,我可能需要提供各種進一步信息來對它進行排序,例如, Makefile,源代碼等,但可能有人認識到這個高級描述的問題,並可以提供一個潛在的修復?

回答

4

最近纔出現的,但我不知道爲什麼,當你調試優化的代碼

<optimized out>只能出現。

由於您確認沒有-O*標誌出現在你的編譯行(不只是看在Makefile,檢查實際編譯日誌),合乎邏輯的結論是,有人安裝了不同的(優化)你的庫的版本在系統的其他地方,並且你鏈接到版本。

在Linux(和許多其他UNIX系統)上,您可以將-Wl,-t標誌添加到鏈接行,並查看鏈接時實際使用哪個庫。

當使用共享庫時,GDB info shared命令會告訴您在運行時拾取哪個庫。