⑦進(jìn)入函數(shù)體內(nèi)執(zhí)行:s
⑧推出函數(shù):finish
⑨退出調(diào)試:q
⑩顯示: p + 變量名
①每次結(jié)果都會(huì)顯示:display + 變量名
②取消該顯示:undisplay + 變量名
③查看斷點(diǎn)信息:info
④查看內(nèi)存:x /nfu adress
n:顯示數(shù)據(jù)的個(gè)數(shù)
F:顯示進(jìn)制數(shù) x d o t c f---16 10 8 2 字符 浮點(diǎn)
u:以幾字節(jié)顯示:b h w g-- 1 2 4 8
⑤顯示函數(shù)調(diào)用棧:bt
⑥查看變量類(lèi)型:ptype + 變量名
p%20a
$1%20=%20{1,2,3,4,5,6,7,8,9,10}
p%20ptr
$%202%20=(int*)0xbffff2b4
p &ptr 和 p pptr 都為0xbffff2b0
問(wèn):怎么用指向一維數(shù)組的指針來(lái)表示數(shù)組的全部元素?
p *ptr@len10 //表示全部
p ptr[4]//第五個(gè)元素
上面已經(jīng)提到linux命令,靜態(tài)庫(kù)的pdb是每個(gè)文件的調(diào)試信息的集合,而默認(rèn)情況下靜態(tài)庫(kù)生成的pdb文件都是vcx0.pdb,例如vs2008就是vc90.pdb,vs2010就是vc100.pdb。查看.h和.c文件,發(fā)現(xiàn).c文件中才是定義的那些函數(shù)的具體實(shí)現(xiàn),結(jié)合第一次靜態(tài)庫(kù)的實(shí)踐,這個(gè).c文件就相當(dāng)于那些add.c、sub.c...10-1的代碼相當(dāng)于那個(gè)main函數(shù),所以可以將其做成一個(gè)靜態(tài)庫(kù)來(lái)使用,但是又出現(xiàn)了新問(wèn)題。其根本原因也是找不到test()函數(shù)的實(shí)現(xiàn)文件,由于該test()函數(shù)的實(shí)現(xiàn)在test.a這個(gè)靜態(tài)庫(kù)中的,故在鏈接的時(shí)候需要在其后加入test.a這個(gè)庫(kù),鏈接命令修改為如下形式即可。
特點(diǎn):
①:中間文件.o(功能代碼)的集合linux命令,鏈接時(shí)使用。
②:靜態(tài)庫(kù)中的程序直接鏈接到可執(zhí)行文件中。
③:靜態(tài)庫(kù)存于磁盤(pán),當(dāng)某個(gè)程序需要的時(shí)間,需要拷貝一份,然后合成到程序中,在一起加載到內(nèi)存上運(yùn)行。這樣當(dāng)多個(gè)程序調(diào)用時(shí),會(huì)導(dǎo)致磁盤(pán)空間的浪費(fèi)。
①*.c將所有的源文件編譯生成中間文件*.o
②ar crv libxxx.a *.o //libxxx.a 中xxx為庫(kù)名
gcc -o main main.c -L(+路徑) -l(庫(kù)名)
例如:
gcc -o main mian.c -L./lib -lmymath
因?yàn)殪o態(tài)庫(kù)是在鏈接時(shí)使用,所以當(dāng)我們?cè)谶\(yùn)行時(shí),將靜態(tài)庫(kù)刪除時(shí),程序依然可以執(zhí)行
Windows .dll Linux .so
①使用動(dòng)態(tài)庫(kù)的程序運(yùn)行起來(lái)后,動(dòng)態(tài)的將動(dòng)態(tài)庫(kù)加載到內(nèi)存的執(zhí)行。
②只需要在內(nèi)存中加載一份,隨后的程序在內(nèi)存中運(yùn)行時(shí),不需要對(duì)此動(dòng)態(tài)庫(kù)重新加載到內(nèi)存上。
③運(yùn)行庫(kù)需要單獨(dú)加載到內(nèi)存上執(zhí)行。
方式一:gcc -fPIC -c add.c
gcc -fPIC -c sub,c
gcc -shared -o libxxx.so *.o
方式二:gcc -fPIC -shared -o libxxx,so *.c
gcc -o run main.c -L(+路徑) -l(+庫(kù)名) //和靜態(tài)庫(kù)相似
使用動(dòng)態(tài)庫(kù)的程序在運(yùn)行時(shí),需要單獨(dú)加載搜索加載動(dòng)態(tài)庫(kù)文件,所以我們要高速操作系統(tǒng)搜索路徑,或者將庫(kù)拷貝到操作系統(tǒng)默認(rèn)的搜索路徑下。
①:root用戶(hù):將動(dòng)態(tài)庫(kù)拷貝到 /lib 或者 /usr/lib任意路徑下
②:設(shè)置環(huán)境變量(僅對(duì)本終端有效)
Export LD_LIBRARY_PATH=絕對(duì)路徑
例如:
Export LD_LIBRARY_PATH= $LD_LIBRARY_PATH’:/home/wangbao/lib’
③修改配置文件: