2013-08-24 41 views
0

我有一個項目,我正在分析C++文件中的DWARF信息。我的系統對於簡單的C++文件運行良好,但是當我開始添加#includes時因爲#includes轉儲大量額外的(通常是不必要的)代碼而變得混亂。有沒有辦法告訴編譯器(g ++)不要爲標準庫生成調試信息?我會這樣認爲,因爲當你調試代碼時,IDE會說「源代碼不可用」。告知編譯器不爲標準庫生成調試信息。

+0

只要你用優化編譯,我認爲沒有調試信息是默認的 – Kal

+0

@Kal - OP需要調試信息,但只限於'用戶'代碼,而不是庫。 –

+0

@MichaelBurr正確。 –

回答

0

有沒有一種方法可以告訴編譯器(g ++)不生成標準庫的調試信息?

當你說「標準庫」,你可能意味着是STL,它有它的大部分代碼中的頭文件,並的,因爲這 STL代碼被納入你的計劃。

不,沒有辦法告訴GCC爲某些編譯器生成調試信息,但不是所有編譯的源代碼。

那麼調試信息有時僅在IDE中部分可用?

與STL,其他圖書館代碼在頭文件,你#include,但在代替實際鏈接庫(即一組不同的翻譯單位,一起存檔到libfoo.a,或鏈接在一起成爲libfoo.so)。這些可鏈接的庫可以用不同的標誌進行編譯,並且經常在進行調試時進行優化編譯。

+0

由於STL代表*標準*模板*庫*,這是一個安全的假設...是。你確定你的答案?例如,如何在IDE中有時只有部分調試信息可用?從我的理解,因爲庫被編譯爲發佈版本,其中您的代碼被編譯爲調試版本。 –

+0

@ Dgrin91我已經更新了答案。 –