gdb調試
語句 | 含義 |
---|---|
gcc -g | 編譯源碼確保含有-g的參數 |
gdb ./app | 啓動gdb並開始調試程序app |
(gdb)set args x1 y1 | 設置app運行的參數(./app x1 y1) |
(gdb) r | 開始運行程序(run的簡寫) |
(gdb) l | 列舉調試的源碼(list的簡寫) |
(gdb) b 16 | 在代碼16行設置斷點 |
(gdb)b main.cpp:12 | 在main.cpp文件的12行設置斷點 |
(gdb)b onRecv | 在onRecv函數設置斷點 |
(gdb)info break | 查看所有的斷點 |
(gdb)info break 3 | 查看第3個斷點 |
(gdb)n | 單行執行,有函數不會進入函數(next簡寫) |
(gdb)s | 單步執行,有函數會跳入函數(step簡寫) |
(gdb)finish | 退出函數 |
(gdb)c | 繼續運行(continue簡寫) |
(gdb)q | 退出調試(quit簡寫) |
(gdb)p a | int a = add(1,2); |
如果在上述代碼附近設置斷點後,查看a的值(print的簡寫)
tcpdump
- tcpdump -n -i eth0 host 192.168.31.147 and 114.114.114.114
截取本機192.168.31.147和主機114.114.114.114之間的通信數據 - tcpdump -n -i eth0 dst 192.168.31.147
- tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157
截取所有進入本機的數據(或多個IP) - tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157 and tcp
抓取進入本機的所有tcp數據包 - tcpdump -n -i eth0 src 192.168.31.147 or 192.168.31.157
- tcpdump -n -i eth0 src 192.168.31.147 and port ! 22 and tcp
抓取從本機發出的數據包(and or進行條件篩選端口) - tcpdump host 192.168.1.142
截獲主機所有的收發的數據
strace
- strace –o log.txt app
執行app程序,並將其涉及的所有系統調用輸出到log.txt中 - strace –o log.txt –p pid
查看指定進程號的程序對應的系統調用的過程
valgrind
- 安裝valgrind
Yum install valgrind - 生成內存泄露信息
valgrind –tool=memcheck –leak-check=yes –log-file=mem.txt ./app - definitely lost
肯定泄露部分 - possibly lost
可能泄露部分 - indirectly lost
間接泄露