Existem algumas ferramentas que você pode usar para fazer isso; o que estará imediatamente disponível é perf
.
Digamos que eu queira ver em tempo real o que está acontecendo com o processo do firefox; Eu poderia fazer perf top -p <pidof firefox>
; você verá a saída como:
Samples: 802 of event 'cycles', Event count (approx.): 374901537
Overhead Shared Object Symbol
1.29% libpthread-2.21.so [.] pthread_mutex_unlock
1.12% [kernel] [k] ksize
0.84% firefox [.] 0x0000000000012bcc
0.71% libpthread-2.21.so [.] pthread_mutex_lock
0.64% [kernel] [k] flat_send_IPI_mask
0.63% firefox [.] 0x0000000000012bdd
0.61% libmozsqlite3.so [.] 0x000000000000cfd0
0.60% [kernel] [k] page_fault
0.60% libxul.so [.] 0x000000000233fa58
0.56% [kernel] [k] nf_nat_ipv4_local_fn
Você poderia então usar ?
para ver o que você pode fazer na interface; você pode aumentar o zoom em um símbolo usando d
. Você pode procurar detalhes de um mapa de um símbolo para ver as chamadas exatas de um processo.
Você provavelmente deseja agregar dados; você pode usar perf record
para fazer isso em vez de perf top
.
Existem outras ferramentas que você pode usar, como SystemTap
ou um depurador real.