Checkout this publication for a recent survey:
http://www.cs.brown.edu/research/vis//resources/lists/dhl.html#Lueke-2006-SSD
gdb to attach to a running program:
$> gdb progname pid
ddd graphical debugger
totalview graphical debugger
gprof where a program spends its time
strace watch all syscalls a program makes
if you didn't write the program, this
is probably your best bet
time summarize system resource usage (real,user,sys)
gcov profiling tool .. frequency of lines executed
(example: 1. gcc -fprofile-arcs -ftest-coverage x.c
2. a.out
3. gcov x.c
4. cat x.c.gcov)
memprof memory profiling (gui)
valgrind memory debugger
ccmalloc memory profiling
Electric Fence (compile with -lefence) - use for memory overruns leak-analyze & LeakCheck - memory usage debugger mpatrol & mptrace - debugging for dynamically allocated memory
vmstat virtual memory statistics
free display free and used memory
top disply top cpu processes
files in /proc files used as interface to kernel data structures
examples: cpuinfo,stat
procinfo display system status - gathered from /proc
ps report process status
ksysguard Task Manager and Performance Monitor
like windows performance monitor
(process table and histogram of system load, memory)
sysstat
sar system activity information
iostat CPU and I/O stats
mpstat Processor related stats
ping send echo request to network host netstat print net connections, routing tables, etc.
traceroute print the route to a network host