ldd查看應(yīng)用程序鏈接了哪些動(dòng)態(tài)庫。
nm列出目標(biāo)文件中包含的符號信息。
size列出各個(gè)段的大小及總的大小。
strings列出文件中的字符串。
readelf讀取elf文件的完整結(jié)構(gòu)。
objdump導(dǎo)出目標(biāo)文件的相關(guān)信息(elf文件相關(guān)工具的源頭)。
gdb對文件的執(zhí)行過程進(jìn)行調(diào)試分析,設(shè)置斷點(diǎn)(b)、單步執(zhí)行(n)、函數(shù)調(diào)用追蹤(bt)、反匯編(disassemble)。
strace跟蹤程序中的系統(tǒng)調(diào)用及信號處理信息。
LD_DEBUG通過設(shè)置這個(gè)環(huán)境變量,可以方便的看到 loader 的加載過程(包括庫的加載,符號解析等過程),使用【LD_DEBUG=help 可執(zhí)行文件路徑】可查看使用幫助。
LD_PRELOAD環(huán)境變量指定的共享庫會被預(yù)先加載,如果出現(xiàn)重名的函數(shù),預(yù)先加載的函數(shù)將會被調(diào)用,如在預(yù)先加載的庫中包含自定義的puts函數(shù),則在執(zhí)行程序時(shí)將使用自定義版本的puts函數(shù),而不是libc庫中的puts函數(shù)。
proc文件系統(tǒng)中包含進(jìn)程的地址空間映射關(guān)系,具體查看/proc/進(jìn)程id/maps文件的內(nèi)容。
valgrind工具對可執(zhí)行程序文件進(jìn)行內(nèi)存檢查(還有cache模擬、調(diào)用過程跟蹤等功能),以避免內(nèi)存泄露等問題。
addrline將可執(zhí)行文件中的地址轉(zhuǎn)換為其在源文件中對應(yīng)的位置(文件名:行號)。