【摘要】在linux下,我們也應該掌握常見的程式除錯指令,這樣才能方便我們在linux下進行工作。在windows下雖然除錯程式比較方便,但是linux有比它更加吸引人的地方在於它可以很輕鬆的就進入乙個程式的內部。這對於我們後期的**分析有很大的好處,所以,今天我就把這幾天學到的關於除錯程式的命令列總計一下,希望會對你們有所幫助。
(1)【strip +程式中的**段】 給檔案**
這個命令列通常是用來加密你的**的。如果你的**不想要被別人分析,你就可以這樣做。當然,這是在彙編**做的修改,它會隱藏函式呼叫的開頭,讓人沒辦法分清楚函式呼叫的順序從而達到保護**隱私的目的。
(2)【gcc test.c -o main -m32】
這個命令列是乙個組合的命令,它要執行的命令是,在編譯階段,當編譯器生成可執行檔案時改名為 main ,對了 後面的 -m32意思是生成的檔案是32位系統下的
(3)【objdump -ds main】(反彙編)
將可執行檔案以反彙編檔案的形式展開
(4)【o1 o2 o3】 程式優化等級,o3是最高等級優化(優化之後很多東西可以省略掉,彙編**會縮減很多)
(5)volatile(阻止編譯優化)
(6)對警告的處理
-w (不生成任何警告資訊)
-wall(顯示所有警告)
1.【valgrind】---檢測程式有沒有記憶體洩漏(windows底下沒有)(這個linux不是自帶的,需要單獨安裝)
2.【top】 觀察記憶體使用情況
3.【shift加》向下翻屏,加《向上翻屏】
除錯時一定要加上 -g 選項
gdb a.out(除錯程式)
1.l(list )num(行號) l func 直接找到對應的函式
2.設定斷點 b 19 ,在19行設定乙個斷點
【b func】 (在函式的第一行**那裡設定斷點)
3. i b(檢視斷點)
4.r. 繼續執行(到斷點那裡停下來)
5.n(next)一直給下走,不會進入函式
6.s 下一步,會進入函式
7.print i (看 i 的值)
8.what is i 檢視型別
9. d(delete) 寫斷點編號而不是行號 1
設定條件斷點b 19 if i==19
10. finish 執行當前函式的返回
11. bt 列印出函式呼叫棧(重要)在程式出錯時使用
(core dumped)段錯誤 ,除錯core程式
第一步:gcc -g
第一步:ulimit -c unlimited (大小不受限制)
第三步:./a.out
第四步:gdb a.out core.***(告訴你在哪一行出錯
linux下除錯程式學習筆記
linux下程式的編譯以及執行,看崩潰檔案,以及用gdb除錯程式 1.gcc安裝完虛擬機器預設攜帶,需要安裝g yum gcc g 編寫乙個cpp檔案,內容如下 1 include 2 using namespace std 3 int main 4 5 6 int p null 7 int a 3...
linux下除錯python程式
之前除錯python程式都是用print引數,感覺有點弱爆啊,最近發現python也有類似c語言gdb的工具pdb,記錄下pdb的使用方法和心得。先找了段簡單的測試程式 usr bin python from ftplib import ftpimport sysimport socket impo...
Linux下GDB除錯程式
gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像vc bcb等ide的除錯,但如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc bcb的圖形化偵錯程式更強大的功能。所謂 寸有所長,尺有所短 就是這個道理。一般來說,gdb主要幫...