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

歡迎光臨散文網(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 的基本知識的評論 (共 條)

分享到微博請遵守國家法律
虞城县| 高青县| 平凉市| 泸定县| 麻栗坡县| 阳朔县| 恩施市| 岑巩县| 宜兰市| 克山县| 肥城市| 泾川县| 宁安市| 沙洋县| 德阳市| 平利县| 攀枝花市| 西畴县| 隆安县| 胶州市| 体育| 永清县| 拉孜县| 华容县| 新兴县| 湖口县| 泰兴市| 科尔| 临夏市| 惠东县| 嵊州市| 苗栗市| 加查县| 新沂市| 白银市| 湖口县| 浑源县| 新疆| 海盐县| 玛多县| 友谊县|