對(duì)與Fedora proc源代碼做相關(guān)介紹
Fedora經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,對(duì)Fedora proc源代碼在這里發(fā)表一下個(gè)人理解,和大家討論討論GDB 可以打印出所調(diào)試程序的Fedora proc源代碼,當(dāng)然,在程序編譯時(shí)一定要加上-g的參數(shù),把源程序信息編譯到執(zhí)行文件中。不然就看不到源程序了。當(dāng)程序停下來(lái)以后, GDB會(huì)報(bào)告程序停在了那個(gè)文件的第幾行上。你可以用list命令來(lái)打印程序的Fedora proc源代碼。還是來(lái)看一看查看源代碼的GDB命令吧。
顯示源代碼
GDB 可以打印出所調(diào)試程序的Fedora proc源代碼,當(dāng)然,在程序編譯時(shí)一定要加上-g的參數(shù),把源程序信息編譯到執(zhí)行文件中。不然就看不到源程序了。當(dāng)程序停下來(lái)以后, GDB會(huì)報(bào)告程序停在了那個(gè)文件的第幾行上。你可以用list命令來(lái)打印程序的Fedora proc源代碼。還是來(lái)看一看查看源代碼的GDB命令吧。
list
list顯示當(dāng)前行后面的源程序。
list -顯示當(dāng)前行前面的源程序。
一般是打印當(dāng)前行的上5行和下5行,如果顯示函數(shù)是是上2行下8行,默認(rèn)是10行,當(dāng)然,你也可以定制顯示的范圍,使用下面命令可以設(shè)置一次顯示源程序的行數(shù)。
set listsize
show listsize查看當(dāng)前l(fā)istsize的設(shè)置。
list命令還有下面的用法:
list
list ,
list +往后顯示源代碼。
一般來(lái)說(shuō)在list后面可以跟以下這們的參數(shù):
搜索源代碼
不僅如此,GDB還提供了Fedora proc源代碼搜索的命令:
forward-search
reverse-search
其中,
指定源文件的路徑
某些時(shí)候,用-g編譯過(guò)后的執(zhí)行程序中只是包括了源文件的名字,沒(méi)有路徑名。GDB提供了可以讓你指定源文件的路徑的命令,以便GDB進(jìn)行搜索。
directory
show directories顯示定義了的源文件搜索路徑。
源代碼的內(nèi)存
你可以使用info line命令來(lái)查看Fedora proc源代碼在內(nèi)存中的地址。info line后面可以跟“行號(hào)”,“函數(shù)名”,“文件名:行號(hào)”,“文件名:函數(shù)名”,這個(gè)命令會(huì)打印出所指定的源碼在運(yùn)行時(shí)的內(nèi)存地址,如:
(gdb) info line tst.c:funcLine 5 of "tst.c" starts at address 0x8048456
還有一個(gè)命令(disassemble)你可以查看源程序的當(dāng)前執(zhí)行時(shí)的機(jī)器碼,這個(gè)命令會(huì)把目前內(nèi)存中的指令dump出來(lái)。如下面的示例表示查看函數(shù)func的匯編代碼。
(gdb) disassemble funcDump of assembler code for function func:0x8048450
【編輯推薦】