亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C/C++ 編譯器和調試器以及靜態庫、動態庫使用匯總(1)

2019-11-17 05:42:52
字體:
來源:轉載
供稿:網友
大多數unix系統下面的調試器的使用方法如下:

gdb介紹GNU 的調試器稱為 gdb,該程序是一個交互式工具,工作在字符模式。在 X Window 系統中,有一個 gdb 的

前端圖形工具,稱為 xxgdb。gdb 是功能強大的調試程序,可完成如下的調試任務:

* 設置斷點;

* 監視程序變量的值;

* 程序的單步執行;

* 修改變量的值。

在可以使用 gdb 調試程序之前,必須使用 -g 選項編譯源文件??稍?makefile 中如下定義 CFLAGS 變量:

CFLAGS = -g

運行 gdb 調試程序時通常使用如下的命令:

gdb PRogname

在 gdb 提示符處鍵入help,將列出命令的分類,主要的分類有:

* aliases:命令別名

* breakpoints:斷點定義;

* data:數據查看;

* files:指定并查看文件;

* internals:維護命令;

* running:程序執行;

* stack:調用棧查看;

* statu:狀態查看;

* tracepoints:跟蹤程序執行。

鍵入 help 后跟命令的分類名,可獲得該類命令的具體清單。

gdb 的常用命令

命令 解釋

break NUM 在指定的行上設置斷點。

BT 顯示所有的調用棧幀。該命令可用來顯示函數的調用順序。

clear 刪除設置在特定源文件、特定行上的斷點。其用法為:clear FILENAME:NUM。

continue 繼續執行正在調試的程序。該命令用在程序由于處理信號或斷點而

導致停止運行時。

display EXPR 每次程序停止后顯示表達式的值。表達式由程序定義的變量組成。

file FILE 裝載指定的可執行文件進行調試。

help NAME 顯示指定命令的幫助信息。

info break 顯示當前斷點清單,包括到達斷點處的次數等。

info files 顯示被調試文件的具體信息。

info func 顯示所有的函數名稱。

info local 顯示當函數中的局部變量信息。

info prog 顯示被調試程序的執行狀態。

info var 顯示所有的全局和靜態變量名稱。

kill 終止正被調試的程序。

list 顯示源代碼段。

make 在不退出 gdb 的情況下運行 make 工具。

next 在不單步執行進入其他函數的情況下,向前執行一行源代碼。

print EXPR 顯示表達式 EXPR 的值。

gdb 使用范例

-----------------

清單 一個有錯誤的 C 源程序 bugging.c

-----------------

#include

#include

static char buff [256];

static char* string;

int main ()

{

printf ("Please input a string: ");

gets (string);

printf ("/nYour string is: %s/n", string);

}

-----------------

上面這個程序非常簡單,其目的是接受用戶的輸入,然后將用戶的輸入打印出來。該程序使用了一個未經過初

始化的字符串地址 string,因此,編譯并運行之后,將出現 Segment Fault 錯誤:

$ gcc -o test -g test.c

$ ./test

Please input a string: asfd

Segmentation fault (core dumped)

為了查找該程序中出現的問題,我們利用 gdb,并按如下的步驟進行:

1.運行 gdb bugging 命令,裝入 bugging 可執行文件;

2.執行裝入的 bugging 命令;

3.使用 where 命令查看程序出錯的地方;

4.利用 list 命令查看調用 gets 函數四周的代碼;

5.唯一能夠導致 gets 函數出錯的因素就是變量 string。用 print 命令查看 string 的值;

6.在 gdb 中,我們可以直接修改變量的值,只要將 string 取一個合法的指針值就可以了,為此,我們在第

11 行處設置斷點;

7.程序重新運行到第 11 行處停止,這時,我們可以用 set variable 命令修改 string 的取值;

8.然后繼續運行,將看到正確的程序運行結果。

運行 gcc/egcs

GCC 是 GNU 的 C 和 C++ 編譯器。實際上,GCC 能夠編譯三種語言:C、C++ 和 Object C(C 語言的一種面向對象擴展)。利用 gcc 命令可同時編譯并連接 C 和 C++ 源程序。

假如你有兩個或少數幾個 C 源文件,也可以方便地利用 GCC 編譯、連接并生成可執行文件。例如,假設你有

兩個源文件 main.c 和 factorial.c 兩個源文件,現在要編譯生成一個計算階乘的程序。

清單 factorial.c

-----------------------

#include

#include

int factorial (int n)

{

if (n <= 1)

return 1;

else

return factorial (n - 1) * n;

}

-----------------------

-----------------------

清單 main.c

-----------------------

#include

#include

int factorial (int n);

int main (int argc, char **argv)

{

int n;

if (argc < 2) {

printf ("Usage: %s n/n", argv [0]);

return -1;

}

else {

n = atoi (argv[1]);

printf ("Factorial of %d is %d./n", n, factorial (n));

}

return 0;

}

-----------------------

利用如下的命令可編譯生成可執行文件,并執行程序:

$ gcc -o factorial main.c factorial.c

$ ./factorial 5

Factorial of 5 is 120.

GCC 可同時用來編譯 C 程序和 C++ 程序。一般來說,C 編譯器通過源文件的后綴名來判定是 C 程序還是 C+

+ 程序。在 linux 中,C 源文件的后綴名為 .c,而 C++ 源文件的后綴名為 .C 或 .cpp。

但是,gcc 命令只能編譯 C++ 源文件,而不能自動和 C++ 程序使用的庫連接。因此,通常使用 g++ 命令來完

完成 C++ 程序的編譯和連接,該程序會自動調用 gcc 實現編譯。

假設我們有一個如下的 C++ 源文件(hello.C):

#include

void main (void)

{

cout << "Hello, world!" << endl;

}

則可以如下調用 g++ 命令編譯、連接并生成可執行文件:

$ g++ -o hello hello.C

$ ./hello

Hello, world!

gcc/egcs 的主要選項

選項 解釋

-ansi 只支持 ANSI 標準的 C 語法。這一選項將禁止 GNU C 的某些特色,

例如 asm 或 typeof 要害詞。

-c 只編譯并生成目標文件。

-DMACRO 以字符串“1”定義 MACRO 宏。

-DMACRO=DEFN 以字符串“DEFN”定義 MACRO 宏。

-E 只運行 C 預編譯器。

-g 生成調試信息。GNU 調試器可利用該信息。

-IDirectorY 指定額外的頭文件搜索路徑DIRECTORY。

-LDIRECTORY 指定額外的函數庫搜索路徑DIRECTORY。

-lLIBRARY 連接時搜索指定的函數庫LIBRARY。

-m486 針對 486 進行代碼優化。

-o FILE 生成指定的輸出文件。用在生成可執行文件時。

-O0 不進行優化處理。

-O 或 -O1 優化生成代碼。

-O2 進一步優化。

-O3 比 -O2 更進一步優化,包括 inline 函數。

-shared 生成共享目標文件。通常用在建立共享庫時。

-static 禁止使用共享連接。

-UMACRO 取消對 MACRO 宏的定義。

-w 不生成任何警告信息。

-Wall 生成所有警告信息。



SCO UNIX下面dbaxtra的調試技術 在sco unix下編程大多離不開C語言,即使是數據庫應用也有很多是與c搭配使用的,例如informix esql/c 就可以在c語言中嵌入sql 語句。很多人認為在unix下寫程序是件很痛苦的事情,其中一個很重要原因是不知道在unix下怎樣調試程序。其實在sco unix源碼調試器是dbxtra或dbXtra,linux下是gdb。它們類似turbo c的調試器,可以跟蹤源碼變量。在unix 下調試程序有如下傳統方法

 一、在要調試語句之前,輸出要調試的變量,利用printf()函數。

 二、寫日志文件,把結果輸出到文件中避免屏幕混亂,利用fprintf()函數。

 三、利用sco 內置調試器dbxtr

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品第1页| 日韩欧美中文在线| 亚洲欧洲中文天堂| 26uuu亚洲伊人春色| 亚洲永久免费观看| 亚洲天堂日韩电影| 亚洲男人天堂网| 色偷偷91综合久久噜噜| 亚洲国内高清视频| 亚洲综合小说区| 粉嫩av一区二区三区免费野| 91精品久久久久久久久不口人| 精品一区二区亚洲| 成人午夜在线观看| 国产精品27p| 国语自产偷拍精品视频偷| 在线中文字幕日韩| 国产成人久久久| 国产精品成人观看视频国产奇米| 2019国产精品自在线拍国产不卡| 国产精品女主播视频| 欧美日韩一区二区免费视频| 欧美在线观看日本一区| 亚洲精品自拍第一页| 亚洲3p在线观看| 欧美色欧美亚洲高清在线视频| 色七七影院综合| 色樱桃影院亚洲精品影院| 欧美日韩另类视频| 国产999精品视频| 亚洲xxxx18| 欧美精品videos另类日本| 在线日韩av观看| 91精品久久久久久久久久久| 色悠久久久久综合先锋影音下载| 黄色成人av在线| 2019亚洲男人天堂| 操91在线视频| 国内精品久久影院| 亚洲男人天堂2024| 国产精品自产拍在线观看中文| 欧美日韩国产在线播放| 国产在线98福利播放视频| 97久久精品人人澡人人爽缅北| 国产欧美韩国高清| 777国产偷窥盗摄精品视频| 久久天堂电影网| 亚洲天堂网站在线观看视频| 日韩经典一区二区三区| 精品国产欧美一区二区三区成人| 欧美—级高清免费播放| 精品亚洲一区二区三区在线观看| 在线观看国产精品日韩av| 伦伦影院午夜日韩欧美限制| 欧美激情一区二区三级高清视频| 亚洲欧洲国产一区| 亚洲精品国产综合区久久久久久久| 精品久久久久久久久久国产| 亚洲黄一区二区| 国内精品一区二区三区四区| 欧美另类69精品久久久久9999| 久久久噜噜噜久噜久久| 中文字幕不卡在线视频极品| 成人a在线视频| 欧美成人一区二区三区电影| 欧美在线视频导航| 亚洲男人天堂视频| 国产精品夜色7777狼人| 日本成人免费在线| 欧美xxxx做受欧美.88| 国产a∨精品一区二区三区不卡| 国产欧美最新羞羞视频在线观看| 国内精品久久久久久中文字幕| 日韩免费在线视频| 欧美高清电影在线看| 欧美亚洲伦理www| 日韩免费在线播放| 日韩电影大全免费观看2023年上| 日韩成人在线播放| 91久久夜色精品国产网站| 日韩av在线免费观看一区| 欧美日韩免费在线观看| 亚洲成人黄色在线| 国产精品一区二区性色av| 国产精品一区二区久久久久| 国产精品一区二区三区毛片淫片| 久久久人成影片一区二区三区| 日本sm极度另类视频| 亚洲国产欧美久久| 国产色视频一区| 中文字幕日韩欧美在线视频| 中文日韩在线视频| 亚洲国产成人在线播放| 亚洲精品成人久久| 久久免费成人精品视频| 狠狠色噜噜狠狠狠狠97| 国产在线播放不卡| 久久久久久有精品国产| 日韩av在线免费观看| 亚洲国产成人爱av在线播放| 国模精品视频一区二区| 国产精品久久综合av爱欲tv| 日韩欧美国产免费播放| 欧美一区二区大胆人体摄影专业网站| 国产精品久久久久久亚洲影视| 38少妇精品导航| 欧美激情视频一区二区三区不卡| 欧美成人午夜剧场免费观看| 在线观看国产成人av片| 91av免费观看91av精品在线| 九九热精品视频国产| 欧美激情综合色综合啪啪五月| 日本精品视频在线观看| 91a在线视频| 日韩av一区在线观看| www欧美xxxx| 中文在线资源观看视频网站免费不卡| 欧美一级片一区| 成人黄色生活片| 国产经典一区二区| 97超级碰碰人国产在线观看| 国产成人a亚洲精品| 国内精品久久久久久中文字幕| 不卡在线观看电视剧完整版| 国内外成人免费激情在线视频| 亚洲国产免费av| 欧美日韩中国免费专区在线看| 97国产真实伦对白精彩视频8| 欧美日韩国产中文精品字幕自在自线| 国产一区二区欧美日韩| 亚洲色图第三页| 欧美人与性动交a欧美精品| 亚洲一区二区三区乱码aⅴ蜜桃女| 一区二区三区回区在观看免费视频| 欧美激情中文字幕乱码免费| 日韩在线视频播放| 欲色天天网综合久久| 久久久91精品国产一区不卡| 国产精品网红直播| 亚洲美女在线视频| 欧美一区深夜视频| 国产精品96久久久久久又黄又硬| 欧美老女人在线视频| 久久99久久久久久久噜噜| 国产一区二区三区丝袜| 欧美激情第6页| 精品国产91久久久久久老师| 久久久久久69| 色综合老司机第九色激情| 国产精品久久久久久五月尺| 亚洲91精品在线| 亚洲性视频网址| 中文字幕亚洲专区| 欧美一级视频免费在线观看| 国产精品精品视频| 国产成人97精品免费看片| 久久久久久美女| 亚洲欧洲一区二区三区在线观看| 欧美激情精品久久久久久变态| 欧美成人一区二区三区电影| 国产美女高潮久久白浆| 久久av中文字幕| 最近2019年好看中文字幕视频| 免费不卡在线观看av|