2013-08-22 65 views
-3

我想編譯一行代碼,並生成調試信息關閉它 -克++力調試信息

int foo(int); 

顯然,你不會想到會產生任何調試信息關的任務,因爲這沒有被調用,也沒有定義,但是我想知道是否有任何選項可以設置來強制生成這個聲明的信息。我試圖做g++ -g -c -O0 foo.cpp,但它不產生任何信息。

+1

你爲什麼要這樣做? – orlp

+3

這真的看起來像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –

+0

@nightcracker因爲我需要它...我不打算泄露我的完整項目在這裏。這有什麼不同嗎? –

回答

3

函數聲明甚至不會將它傳遞給可執行文件。該行僅用於編譯器,二進制文件中沒有任何生成的代碼。由於它在編譯過程中消失,因此沒有可生成的調試信息。

1

爲函數定義生成調試信息,而不是聲明。爲函數聲明生成調試信息毫無意義;這樣的調試信息不​​會有任何用處。

類型聲明可能會產生調試信息,因爲這有助於調試器找到該類型對象的數據成員,但自由函數聲明不會產生有用的調試信息。