最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

感謝北大王修遠(yuǎn)同學(xué)分享gcc和gdb的使用技巧: 通俗易懂, 包教包會

2023-05-29 15:23 作者:盧朓  | 我要投稿

# GCC & GDB


作者: 北大王修遠(yuǎn)

---


- 安裝


?- ubuntu:sudo apt install gcc


?- windows:mingw[Welcome to MinGW.OSDN](http://mingw.osdn.io/index.html)


- 官方文檔:[Top (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc/)


- 編譯流程


???![](編譯流程.jpg)


?1. 預(yù)處理(preprocessing):去注釋、頭文件包含、宏替換、條件編譯

????-E 選項(xiàng)指示編譯器僅對輸入文件進(jìn)行預(yù)處理(.i文件)


?2. 編譯(compilation)

????-S 選項(xiàng)產(chǎn)生匯編語言文件(.s文件)


?3. 匯編(assembly)

????-c 選項(xiàng)編譯為機(jī)器語言的目標(biāo)代碼(.o文件)


?4. 鏈接(link)(可執(zhí)行文件)


????-l 指定單個庫文件, -L指定庫文件目錄


- 幫助:gcc --help, man gcc


- 常用編譯選項(xiàng)


?- -o \<filename>


?- -D\<macro>


?- 編譯標(biāo)準(zhǔn):[C Dialect Options (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html)


???- -ansi(對于C等價于 -std=c90;對于C++等價于-std=c++98)


???- -std=???//c99_c11.c


?- 警告:[Warning Options (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html)


???- -Wall:全部警告 //wall.c


???- -Wextra, -Werror


?- 優(yōu)化:[Optimize Options (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html)


???- -O0, -O1, -O2, -O3 //fibonacci.c


???- -Ofast:在-O3的基礎(chǔ)上進(jìn)一步優(yōu)化,不嚴(yán)格按照標(biāo)準(zhǔn)


???- -Os: 最優(yōu)化文件大小,開啟所有一般不增加文件大小的-O2選項(xiàng),并額外執(zhí)行一些優(yōu)化代碼大小的選項(xiàng)。


?????- -Oz:優(yōu)化文件大小,相對于-Os更加激進(jìn),可能降低速度


?- -g:生成gdb符號表[Debugging Options (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html)


???- Og:debug優(yōu)化


- 完整編譯選項(xiàng)列表參見[Top (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc/)


---


GDB


- 幫助:help,man gdb, [Top (Debugging with GDB) (sourceware.org)](https://sourceware.org/gdb/current/onlinedocs/gdb.html/)


- 使用:gdb <filename>


- 命令:


?- 顯示:


???- l(list): 顯示指定行號或者指定函數(shù)附近的代碼??


?????- set listsize

?????- show listsize


???- p(print): 顯示變量或表達(dá)式的值


???- disp(display): 把一個表達(dá)式設(shè)置為display,當(dāng)程序每次停下來時都會顯示其值


???- i(info): 顯示各種信息,如i b顯示所有斷點(diǎn), i disp 顯示display,i lo顯示所有局部變量


?- 斷點(diǎn):


???- b(break): 在指定行號或者指定函數(shù)開頭處設(shè)置斷點(diǎn)


?????- cond 條件斷點(diǎn) e.g. cond 2 i==5


?????- watch \<var>,awatch(讀寫), rwatch(讀)


?????- 編譯器可能會優(yōu)化掉某些行,此時使用-O0 //code.cpp -Og; b 77


???- cl(clear): 取消斷點(diǎn),和b的格式相同,如果該位置有多個斷點(diǎn)將同時取消


???- d(delete): 取消指定編號的斷點(diǎn),若不指定編號則刪除所有斷點(diǎn)


?- 運(yùn)行:


???- r(run): 運(yùn)行程序,直到程序結(jié)束或者遇到斷點(diǎn)而停下


???- c(continue): 在程序中斷后繼續(xù)執(zhí)行程序,直到程序結(jié)束或者遇到斷點(diǎn)而停下。在程序開始執(zhí)行前只能用r,不能用c


???- n(next): 執(zhí)行一條語句,如果有函數(shù)調(diào)用,則把它作為一個整體


???- s(step): 執(zhí)行一條語句,如果有函數(shù)調(diào)用,則進(jìn)入函數(shù)內(nèi)部


???- u(until): 執(zhí)行到指定行號或者指定函數(shù)的開頭


?- q(quit)

?作者:盧朓 https://www.bilibili.com/read/cv23897007?spm_id_from=333.999.0.0 出處:bilibili

感謝北大王修遠(yuǎn)同學(xué)分享gcc和gdb的使用技巧: 通俗易懂, 包教包會的評論 (共 條)

分享到微博請遵守國家法律
襄垣县| 奉新县| 苗栗市| 双柏县| 且末县| 庆阳市| 山阳县| 井研县| 武陟县| 博客| 洱源县| 八宿县| 大埔县| 太白县| 灵山县| 石景山区| 隆子县| 双峰县| 县级市| 西城区| 丹巴县| 内黄县| 桓台县| 鹤峰县| 邵东县| 平南县| 贡觉县| 策勒县| 京山县| 宜黄县| 安陆市| 崇州市| 化德县| 佛冈县| 临泉县| 汉源县| 高清| 分宜县| 丹棱县| 博野县| 周宁县|