誤區:gcc編譯c語言,g++編譯c++
區別1:gcc編譯c++**需要加-lstdc++,gcc預設只鏈結c庫,並不會鏈結c++庫,需要手工指定
g++預設鏈結c庫和c++標準庫
區別2:gcc如果編譯c語言檔案,用c語言方式編譯,編譯c++用c++方式編譯,g++不管編譯c還是c++都用c++標方式編譯
可執行檔案的兩種版本
1.debug版本,除錯版本,編譯階段會加入某些除錯資訊
編譯時,加入-g選項,可生成debug版本
2.release版本,發行版本,沒有除錯資訊
gcc預設生成release版本
gdb debug版本可執行檔案
顯示原始碼:l(list)(預設顯示main函式所在檔案的原始碼)
list filename:行號
斷點管理:
新增斷點:1.b 行號 給指定行新增斷點
2.b 函式名 給指定函式實現第一行新增乙個斷點
3.b filename 行號 給指定檔案的行號新增乙個斷點
檢視斷點資訊:info b
刪除斷點:d 斷點號
執行管理:
r 啟動執行,程式執行到邏輯上的第乙個斷點處
n 逐過程
s 逐語句
finish 跳出函式
c 繼續執行,直到下乙個斷點
u 退出迴圈
q 退出除錯
顯示變數的值:
p 變數名 輸入一次,執行一次
display 變數名 執行過程中,每執行一步,顯示一次
info display 顯示所有display資訊
undisplay display編號 取消乙個display
p &valname 顯示變數位址
p ptr 顯示ptr中儲存的值,指向變數的位址
p *ptr 顯示ptr指標指向的變數的值
p arr 顯示陣列所有元素
p arr 在形參中退化為指標 p *arr@陣列大小 顯示陣列所有元素
對於結構體變數
p node 顯示結構體變數中所有成員的值
p node.a 顯示node中a成員的值
p node->a
如果測試乙個有返回值的函式能否正常執行
p 函式名(傳遞的實參)顯示函式執行結果
bt 顯示函式呼叫棧
Linux gcc g 編譯器使用
1.首先應會設定幾個好用的環境變數 cplus include path cplus include path home test include 此環境變數用來設定標頭檔案包含路徑,這樣就不用編譯的時候新增路徑咯 ld library path ld library path home test ...
Linux gcc g 靜態庫與動態庫
原始碼 test.h pragma once void test test.c include stdio.h void test hello.h pragma once void hello const char name hello.c include stdio.h include hello...
Linux gcc g 編譯器的使用
編譯器編譯過程要經歷四個階段 1.預處理 進行巨集替換 e 2.編譯 生成彙編 s 3.彙編 生成機器可識別 c 4.連線 生成可執行檔案或庫檔案 o 預處理 進行巨集替換 編譯 生成彙編 彙編 生成機器可識別 連線 生成可執行檔案或庫檔案 函式庫一般分為靜態庫和動態庫兩種 gdb是除錯乙個程式的執...