1. 程式人生 > >vim gdb 除錯及gcc優化

vim gdb 除錯及gcc優化

基本的除錯命令 就不說了。

今天收穫了。

gdb 使用while列印陣列

set $i=0 while $i<10 p shuzu[$i] set $i++ end

gcc優化

原來經常遇到的-O是優化執行時間的。 自己試了試 -O0 比-O3慢了3倍速度大概,當然也要分具體程式碼。

GCC -O選項

這個選項控制所有的優化等級。使用優化選項會使編譯過程耗費更多的時間,並且佔用更多的記憶體,尤其是在提高優化等級的時候。 
-O設定一共有五種:-O0、-O1、-O2、-O3和-Os。你只能在/etc/make.conf裡面設定其中的一種。

除了-O0以外,每一個-O設定都會多啟用幾個選項,請查閱gcc手冊的優化選項章節,以便了解每個-O等級啟用了哪些選項及它們有何作用。

讓我們來逐一考察各個優化等級:

-O0:這個等級(字母“O”後面跟個零)關閉所有優化選項,也是CFLAGS或CXXFLAGS中沒有設定-O等級時的預設等級。這樣就不會優化程式碼,這通常不是我們想要的。 
-O1:這是最基本的優化等級。編譯器會在不花費太多編譯時間的同時試圖生成更快更小的程式碼。這些優化是非常基礎的,但一般這些任務肯定能順利完成。 
-O2:-O1的進階。這是推薦的優化等級,除非你有特殊的需求。-O2會比-O1啟用多一些標記。設定了-O2後,編譯器會試圖提高程式碼效能而不會增大體積和大量佔用的編譯時間。 
-O3:這是最高最危險的優化等級。用這個選項會延長編譯程式碼的時間,並且在使用gcc4.x的系統裡不應全域性啟用。自從3.x版本以來gcc的行為已經有了極大地改變。在3.x,-O3生成的程式碼也只是比-O2快一點點而已,而gcc4.x中還未必更快。用-O3來編譯所有的軟體包將產生更大體積更耗記憶體的二進位制檔案,大大增加編譯失敗的機會或不可預知的程式行為(包括錯誤)。這樣做將得不償失,記住過猶不及。在gcc 4.x.中使用-O3是不推薦的。 
-Os:這個等級用來優化程式碼尺寸。其中啟用了-O2中不會增加磁碟空間佔用的程式碼生成選項。這對於磁碟空間極其緊張或者CPU快取較小的機器非常有用。但也可能產生些許問題,因此軟體樹中的大部分ebuild都過濾掉這個等級的優化。使用-Os是不推薦的。