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