Tools that help. When developing code (systems programming) on the Linux OS: a compilation by Kaiwan N Billimoria :
Tools |
Tool Type |
Detail |
ARM support (on target)? |
Comments |
||
USER-SPACE |
||||||
| find/grep | Source Code browsers | Y -busybox | Source; reqd on host dev system only | |||
| cscope | NA | |||||
| ctags | NA | |||||
| Source Code static analysis. | FOSS | NA | ||||
| splint (prev LCLint) | NA | |||||
| Coverity / Klocwork / etc | Commercial | ? | ||||
| strace | Application trace | Y | ||||
| ltrace | Y | |||||
| [f]printf | Application – simple instrumentation | Y | Code-based | |||
| My “MSG” and other macros | Header file | Useful | Y | |||
| gdb | Source-level debuggers | Y | Usually on host dev system only | |||
| ddd | ? | |||||
| Insight | ? | |||||
| ps | Process state | Y -busybox | ||||
| pgrep, pkill | Y -busybox | |||||
| pstree | ? | |||||
| top | Y | |||||
| pidstat | ? | |||||
| procfs | System state / performance tuning | |||||
| vmstat | generic | Y | ||||
| dstat | Tip: dstat –time –top-io-adv –top-cpu –top-mem 5 (every 5s) |
|||||
| iotop, iostat, ionice | disk IO | Y | buildroot | |||
| sar | ? | package: sysstat | ||||
| lsof | ? | |||||
| munin | ||||||
| Valgrind | Memory Checkers and analysis | Considered the best OSS memory checker suite | Y -ver 3.7 on | buildroot; only for Cortex A8/A9 && kernel ver < 3.x | ||
| MEMWATCH | Y | |||||
| YAMD | ? | |||||
| Electric Fence | ? | |||||
| Dmalloc | Y | |||||
| mtrace | Y | |||||
| iftop | Network monitoring, etc | ? | ||||
| iptraf | ? | |||||
| netstat | Y | -netstat-nat | ||||
| ethtool | Y | |||||
| tcpdump | Y | |||||
| wireshark | Ethernet, USB sniffer | N | GUI- on host | |||
Also, BTW, here’s a nice link :
16 commands to check hardware information on Linux |
||||||
KERNEL |
||||||
| printk | Kernel – simple instrumentation | Y | Kernel code-based debugging techniques [note: recommend you use debugfs and not procfs for debug-related stuff]. | |||
| My “MSG” and other macros | Header file | Useful | Y | |||
| procfs | Kernel Analysis & Tuning w/ sysctl | Y | ||||
| ioctl | Y | |||||
| debugfs | Recommended | Y | ||||
| Magic SysRq | During development / system lockups | Y | ||||
| gdb with proc/kcore | Kernel lookup | Y | ||||
| KGDB | Kernel development debugging | Y | ||||
| KDB | ? | |||||
| KProbes, JProbes | Non-intrusive kernel hooks | V useful; for learning / debugging | Y | |||
| SystemTap | Kernel scriptable tracing/probing instrumentation tool | (AFAIK, layered on Kprobes) | ? | |||
| Ftrace | Kernel trace framework | Y | ||||
| OProfile | Kernel and App profiler | ? | ||||
| LTTng | Linux Trace Toolkit next gen – Instrumentation | ? | ||||
| Kdump, Kexec and Crash | Crash dump and analysis | Y -kexec | crash -on host | |||
| Perf / Perfmon2 | HW-based performance monitoring | Y (limited?) | Arch-independent | |||
| cpufreq | Power Management | |||||
| powerTOP | ||||||
| CGroups | Scheduler | Y | ||||
| Proc – sysctl | Y | |||||
| chrt | Y | buildroot | ||||
| cpuset, taskset | Y | buildroot | ||||
| sparse | Kernel-space static code analysis | NA -src | Reqd on dev host only | |||
| QEMU | Virtualization, open source | Y | ||||
| VirtualBox | ? | |||||
| KVM | N | |||||
| Tip: Using buildroot,enable the packages/features you want for embedded! Kaiwan N Billimoria, kaiwanTECH. |
A quick-ref pic from Brendan Gregg’s fantastic site on Linux Performance tools (and Linux performance monitoring in general):
