小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

GCC優(yōu)化級(jí)別以及GDB調(diào)試級(jí)別

 rookie 2011-12-04

GCC -O選項(xiàng)

這個(gè)選項(xiàng)控制所有的優(yōu)化等級(jí)。使用優(yōu)化選項(xiàng)會(huì)使編譯過程耗費(fèi)更多的時(shí)間,并且占用更多的內(nèi)存,尤其是在提高優(yōu)化等級(jí)的時(shí)候。 
-O設(shè)置一共有五種:-O0、-O1、-O2、-O3和-Os。你只能在/etc/make.conf里面設(shè)置其中的一種。

除了-O0以外,每一個(gè)-O設(shè)置都會(huì)多啟用幾個(gè)選項(xiàng),請(qǐng)查閱gcc手冊(cè)的優(yōu)化選項(xiàng)章節(jié),以便了解每個(gè)-O等級(jí)啟用了哪些選項(xiàng)及它們有何作用。

讓我們來逐一考察各個(gè)優(yōu)化等級(jí):

-O0:這個(gè)等級(jí)(字母“O”后面跟個(gè)零)關(guān)閉所有優(yōu)化選項(xiàng),也是CFLAGS或CXXFLAGS中沒有設(shè)置-O等級(jí)時(shí)的默認(rèn)等級(jí)。這樣就不會(huì)優(yōu)化代碼,這通常不是我們想要的。 
-O1:這是最基本的優(yōu)化等級(jí)。編譯器會(huì)在不花費(fèi)太多編譯時(shí)間的同時(shí)試圖生成更快更小的代碼。這些優(yōu)化是非?;A(chǔ)的,但一般這些任務(wù)肯定能順利完成。 
-O2:-O1的進(jìn)階。這是推薦的優(yōu)化等級(jí),除非你有特殊的需求。-O2會(huì)比-O1啟用多一些標(biāo)記。設(shè)置了-O2后,編譯器會(huì)試圖提高代碼性能而不會(huì)增大體積和大量占用的編譯時(shí)間。 
-O3:這是最高最危險(xiǎn)的優(yōu)化等級(jí)。用這個(gè)選項(xiàng)會(huì)延長編譯代碼的時(shí)間,并且在使用gcc4.x的系統(tǒng)里不應(yīng)全局啟用。自從3.x版本以來gcc的行為已經(jīng)有了極大地改變。在3.x,-O3生成的代碼也只是比-O2快一點(diǎn)點(diǎn)而已,而gcc4.x中還未必更快。用-O3來編譯所有的軟件包將產(chǎn)生更大體積更耗內(nèi)存的二進(jìn)制文件,大大增加編譯失敗的機(jī)會(huì)或不可預(yù)知的程序行為(包括錯(cuò)誤)。這樣做將得不償失,記住過猶不及。在gcc 4.x.中使用-O3是不推薦的。 
-Os:這個(gè)等級(jí)用來優(yōu)化代碼尺寸。其中啟用了-O2中不會(huì)增加磁盤空間占用的代碼生成選項(xiàng)。這對(duì)于磁盤空間極其緊張或者CPU緩存較小的機(jī)器非常有用。但也可能產(chǎn)生些許問題,因此軟件樹中的大部分ebuild都過濾掉這個(gè)等級(jí)的優(yōu)化。使用-Os是不推薦的。

GDB(GNU Debugger)是GCC的調(diào)試工具。其功能強(qiáng)大,現(xiàn)描述如下:

    GDB主要幫忙你完成下面四個(gè)方面的功能:

    1.啟動(dòng)你的程序,可以按照你的自定義的要求隨心所欲的運(yùn)行程序。

    2.可讓被調(diào)試的程序在你所指定的調(diào)置的斷點(diǎn)處停住。(斷點(diǎn)可以是條件表達(dá)式)

    3.當(dāng)程序被停住時(shí),可以檢查此時(shí)你的程序中所發(fā)生的事。

    4.動(dòng)態(tài)的改變你程序的執(zhí)行環(huán)境。

GCC -g選項(xiàng)控制GDB調(diào)試級(jí)別

如果不打開-g或者-ggdb(GDB專用)調(diào)試開關(guān),GCC編譯時(shí)不會(huì)加入調(diào)試信息,因?yàn)檫@會(huì)增大生成代碼的體積。GCC采用了分級(jí)調(diào)試,通過在-g選項(xiàng)后附加數(shù)字1、2或3來指定在代碼中加入調(diào)試信息量。默認(rèn)的級(jí)別是2(-g2),此時(shí)調(diào)試信息包括擴(kuò)展的符號(hào)表、行號(hào)、局部或外部變量信息。級(jí)別3(- g3)包含級(jí)別2中的調(diào)試信息和源代碼中定義的宏。級(jí)別1(-g1)不包含局部變量和與行號(hào)有關(guān)的調(diào)試信息,只能用于回溯跟蹤和堆棧轉(zhuǎn)儲(chǔ)之用。[ 回溯跟蹤指的是監(jiān)視程序在運(yùn)行過程中的函數(shù)調(diào)用歷史,堆棧轉(zhuǎn)儲(chǔ)則是一種以原始的十六進(jìn)制格式保存程序執(zhí)行環(huán)境的方法,兩者都是經(jīng)常用到的調(diào)試手段。



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多