概述
代碼測試有很多方面,例如運行時間、函數調用關係圖、代碼覆蓋度、性能分析
(Profiling) 、內存訪問越界(Segmentation Fault) 、緩衝區溢出(Stack
Smashing 合法地進行非法的內存訪問?所以很危險) 、內存泄露(Memory
Leak) 。
代碼測試工具簡介:
1.測試程序的運行時間 time
2.函數調用關係圖 calltree
3.性能測試工具 gprof & kprof
4.代碼覆蓋率測試 gcov & ggcov
5.內存範圍越界 catchsegv, libSegFault.so
6.緩衝區溢出 libsafe.so
7.內存泄漏 Memwatch, Valgrind, mtrace
8.系統調用分析 strace
代碼調試:
1.靜態調試:printf + gcc -D(打印程序中的變量)
2.交互式的調試(動態調試):gdb(支持本地和遠程);ald(彙編指令級別的調試)
嵌入式系統調試方法:gdbserver/gdb
彙編代碼的調試 ald
3.實時調試:gdb tracepoint
4.內核調試工具
https://elinux.org/images/c/c6/Tools_slides.pdf
代碼優化:
- Oprofile
- Perf