* `curl`?和?`curl -I`?可以便捷地被應用于 web 調試中,它們的好兄弟?`wget`?也可以,或者是更潮的?[`httpie`](https://github.com/jakubroztocil/httpie)。
* 使用?`iostat`、`netstat`、`top`?(`htop`?更佳)和?`dstat`?去獲取硬盤、cpu 和網絡的狀態。熟練掌握這些工具可以使你快速的對系統的當前狀態有一個大概的認識。
* 若要對系統有一個深度的總體認識,使用?[`glances`](https://github.com/nicolargo/glances)。它在一個終端窗口中向你提供一些系統級的數據。這對于快速的檢查各個子系統非常有幫助。
* 若要了解內存狀態,運行并理解?`free`?和?`vmstat`?的輸出。尤其注意“cached”的值,它指的是 Linux 內核用來作為文件緩存的內存大小,因此它與空閑內存無關。
* Java 系統調試則是一件截然不同的事,一個可以用于 Oracle 的 JVM 或其他 JVM 上的調試的小技巧是你可以運行`kill -3 <pid>`?同時一個完整的棧軌跡和堆概述(包括 GC 的細節)會被保存到標準輸出/日志文件。JDK 中的`jps`,`jstat`,`jstack`,`jmap`?很有用。[SJK tools](https://github.com/aragozin/jvm-tools)?更高級.
* 使用?`mtr`?去跟蹤路由,用于確定網絡問題。
* 用?`ncdu`?來查看磁盤使用情況,它比常用的命令,如?`du -sh *`,更節省時間。
* 查找正在使用帶寬的套接字連接或進程,使用?`iftop`?或?`nethogs`。
* `ab`?工具(捆綁于 Apache)可以簡單粗暴地檢查 web 服務器的性能。對于更復雜的負載測試,使用?`siege`。
* `wireshark`,`tshark`?和?`ngrep`?可用于復雜的網絡調試。
* 了解?`strace`?和?`ltrace`。這倆工具在你的程序運行失敗、掛起甚至崩潰,而你卻不知道為什么或你想對性能有個總體的認識的時候是非常有用的。注意 profile 參數(`-c`)和附加到一個運行的進程參數 (`-p`)。
* 了解使用?`ldd`?來檢查共享庫。
* 了解如何運用?`gdb`?連接到一個運行著的進程并獲取它的堆棧軌跡。
* 學會使用?`/proc`。它在調試正在出現的問題的時候有時會效果驚人。比如:`/proc/cpuinfo`,`/proc/meminfo`,`/proc/cmdline`,`/proc/xxx/cwd`,`/proc/xxx/exe`,`/proc/xxx/fd/`,`/proc/xxx/smaps`(這里的?`xxx`?表示進程的 id 或 pid)。
* 當調試一些之前出現的問題的時候,`sar`?非常有用。它展示了 cpu、內存以及網絡等的歷史數據。
* 關于更深層次的系統分析以及性能分析,看看?`stap`([SystemTap](https://sourceware.org/systemtap/wiki)),[`perf`](http://en.wikipedia.org/wiki/Perf_(Linux)),以及[`sysdig`](https://github.com/draios/sysdig)。
* 查看你當前使用的系統,使用?`uname`?或者?`uname -a`?(Unix/kernel 信息) or?`lsb_release -a`?(Linux 發行版信息)。
* 無論什么東西工作得很歡樂時試試?`dmesg`(可能是硬件或驅動問題)。