五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

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

GCC 和 GDB 的基本知識

2023-05-24 20:38 作者:盧朓  | 我要投稿

# GCC & GDB

作者: 北大王修遠
---

- 安裝
?
? - 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 選項指示編譯器僅對輸入文件進行預(yù)處理(.i文件)
?
? 2. 編譯(compilation)
???? -S 選項產(chǎn)生匯編語言文件(.s文件)
?
? 3. 匯編(assembly)
???? -c 選項編譯為機器語言的目標代碼(.o文件)
?
? 4. 鏈接(link)(可執(zhí)行文件)
??? ?
???? -l 指定單個庫文件, -L指定庫文件目錄

- 幫助:gcc --help, man gcc

- 常用編譯選項
?
? - -o \<filename>
?
? - -D\<macro>
?
? - 編譯標準:[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ǔ)上進一步優(yōu)化,不嚴格按照標準
?? ?
??? - -Os: 最優(yōu)化文件大小,開啟所有一般不增加文件大小的-O2選項,并額外執(zhí)行一些優(yōu)化代碼大小的選項。
???? ?
????? - -Oz:優(yōu)化文件大小,相對于-Os更加激進,可能降低速度
?
? - -g:生成gdb符號表[Debugging Options (Using the GNU Compiler Collection (GCC))](https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html)
?? ?
??? - Og:debug優(yōu)化

- 完整編譯選項列表參見[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): 顯示變量或表達式的值
?? ?
??? - disp(display): 把一個表達式設(shè)置為display,當(dāng)程序每次停下來時都會顯示其值
?? ?
??? - i(info): 顯示各種信息,如i b顯示所有斷點, i disp 顯示display,i lo顯示所有局部變量
?
? - 斷點:
?? ?
??? - b(break): 在指定行號或者指定函數(shù)開頭處設(shè)置斷點
???? ?
????? - cond 條件斷點 e.g. cond 2 i==5
???? ?
????? - watch \<var>,awatch(讀寫), rwatch(讀)
???? ?
????? - 編譯器可能會優(yōu)化掉某些行,此時使用-O0 //code.cpp -Og; b 77
?? ?
??? - cl(clear): 取消斷點,和b的格式相同,如果該位置有多個斷點將同時取消
?? ?
??? - d(delete): 取消指定編號的斷點,若不指定編號則刪除所有斷點
?
? - 運行:
?? ?
??? - r(run): 運行程序,直到程序結(jié)束或者遇到斷點而停下
?? ?
??? - c(continue): 在程序中斷后繼續(xù)執(zhí)行程序,直到程序結(jié)束或者遇到斷點而停下。在程序開始執(zhí)行前只能用r,不能用c
?? ?
??? - n(next): 執(zhí)行一條語句,如果有函數(shù)調(diào)用,則把它作為一個整體
?? ?
??? - s(step): 執(zhí)行一條語句,如果有函數(shù)調(diào)用,則進入函數(shù)內(nèi)部
?? ?
??? - u(until): 執(zhí)行到指定行號或者指定函數(shù)的開頭
?
? - q(quit)

GCC 和 GDB 的基本知識的評論 (共 條)

分享到微博請遵守國家法律
太康县| 岫岩| 达孜县| 锡林浩特市| 贺兰县| 五峰| 洛扎县| 达州市| 台山市| 荣成市| 涞源县| 镇巴县| 常宁市| 孙吴县| 新疆| 溧水县| 宜川县| 合山市| 嵊州市| 闽侯县| 郑州市| 临城县| 德格县| 平顶山市| 裕民县| 兴文县| 湖北省| 甘南县| 太仓市| 宁德市| 寻甸| 安达市| 吴堡县| 茶陵县| 大新县| 平舆县| 监利县| 镇康县| 乐山市| 衢州市| 搜索|