2011-06-20 26 views
1

考慮一個字段大小寫,我們將不提供使用gdb標記構建的圖像。 現在有任何鏈接或文檔或任何類似的東西,這有助於 調試字段中生成的核心文件(請記住,圖像不是用-g gdb標誌構建的)。調試不帶gdb標記的圖像的核心文件-g

一些指針會非常有用!

+0

據我所知,您必須在二進制文件中啓用符號才能調試核心文件。請記住,核心文件只是應用程序在執行點X處的內存佈局。您必須包含該應用程序,因爲這是gdb如何可以知道堆棧中的幀以及這些行映射到的符號。 – Suroot

回答

0

您需要使用-g構建可執行文件(您也可以指定-O)。然後您發佈可執行文件的剝離版本(man strip)。任何核心文件都將與任一版本兼容。

+1

如果原始圖像不是用-g構建的,通常可以用-g重建圖像(從代碼到編譯器系統頭文件等所有內容都保持不變),並從構建的映像中分析核心文件沒有-g使用用-g構建的圖像 – nos

3

更好的解決方案是始終使用-g(至少對於GCC不抑制優化)構建程序。然後,您可以使用objcopy創建separate debug files,該產品不附帶該產品,並剝離了您運輸的二進制文件。

然後,當您從開發機器上的字段加載核心時,調試符號出現時,GDB將從單獨的文件加載調試符號。在現場,調試符號文件不存在,因爲您沒有發貨,所以調試信息不​​可用。

如果適用,您還可以使用符號文件創建DVD或USB密鑰,以便技術人員可以使用它們來帶符號以在現場分析核心文件。