比如,printf函數。使用時應包括stdio.h,打開stdio.h你只能看到,printf這
個函數的申明,卻看不到printf具體是怎麼實現的,而函數的實現在相應的C庫
中。而庫文件一般是以二進制形式而不是C源文件形式提供給用戶使用的。程序
中包括了stdio.h這個頭文件。鏈接器就能根據頭件中的信息找到printf這個函
數的實現並鏈接進這個程序代碼段裏。
總結起來就是,庫文件通過頭文件向外導出接口。用戶通過頭文件找到庫文件中
函數實現的代碼從而把這段代碼鏈接到用戶程序中去
2.頭文件中的“”和<>de 區別
<>是使用標準頭文件
""是使用自己的頭文件,如果找不到就到標準頭文件去找,還找不到就報錯
3
顯示源代碼
GDB 可以打印出所調試程序的源代碼,當然,在程序編譯時一定要加上-g的參數,把源程序信息編譯到執行文件中。不然就看不到源程序了。當程序停下來以後,GDB會報告程序停在了那個文件的第幾行上。你可以用list命令來打印程序的源代碼。還是來看一看查看源代碼的GDB命令吧。
list <linenum> 顯示程序第linenum行的周圍的源程序。
list <function> 顯示函數名爲function的函數的源程序。
list 顯示當前行後面的源程序。
list - 顯示當前行前面的源程序。
一般是打印當前行的上5行和下5行,如果顯示函數是是上2行下8行,默認是10行,當然,你也可以定製顯示的範圍,使用下面命令可以設置一次顯示源程序的行數。
set listsize <count> 設置一次顯示源代碼的行數。
show listsize 查看當前listsize的設置。
list命令還有下面的用法:
list <first>, <last> 顯示從first行到last行之間的源代碼。
list , <last> 顯示從當前行到last行之間的源代碼。
list + 往後顯示源代碼。
一般來說在list後面可以跟以下這們的參數:
<linenum> 行號。
<+offset> 當前行號的正偏移量。
<-offset> 當前行號的負偏移量。
<filename:linenum> 哪個文件的哪一行。
<function> 函數名。
<filename:function> 哪個文件中的哪個函數。
<*address> 程序運行時的語句在內存中的地址。