Glossário/Quando algo dá errado
Extrair Amostra do Processo
Também: amostra de um app, amostra de processo, sample
Resposta rápida
Extrair Amostra do Processo é uma ferramenta do Monitor de Atividade que registra o que um processo selecionado está fazendo durante alguns segundos e gera um relatório em texto de onde as threads dele passam o tempo. Os desenvolvedores usam esses relatórios para descobrir por que um app está lento, ocupado ou travado.
A Apple descreve Extrair Amostra do Processo como a criação de um relatório sobre um processo selecionado durante um período de 3 segundos. O relatório lista cada thread e as funções que ela estava executando, com contagens que mostram quantas vezes cada uma apareceu.
Você não precisa ler o relatório. Ele é mais útil quando um app está travado ou usando muita CPU e você quer mandar algo concreto para o desenvolvedor.
Como extrair uma amostra de um processo no Monitor de Atividade
Selecione o processo, clique no botão Mais (os três pontos) no alto da janela e escolha Extrair Amostra do Processo. Você também pode clicar duas vezes no processo e clicar em Amostra na janela que abrir.
Quando o relatório aparecer, você pode salvá-lo como arquivo de texto e anexá-lo a um relatório de bug ou a um pedido de suporte.
Como extrair uma amostra de um processo pelo Terminal
Execute sample <PID> 5 para extrair uma amostra de um processo durante 5 segundos. Você pode usar parte do nome do processo em vez do PID. O relatório é exibido e salvo em um arquivo, e o caminho aparece quando ele termina.
Como ler um relatório de amostra
O relatório começa com um cabeçalho: o nome e o PID do processo, o caminho dele, o processo principal, o tipo de código e a versão do macOS. A parte que importa vem em seguida, em Call graph.
O call graph lista cada thread. A thread principal, a que trata os cliques e as teclas, aparece como com.apple.main-thread. Abaixo de cada thread, as funções ficam recuadas para mostrar qual função chamou qual. O número no começo de uma linha é quantas vezes aquela função estava na pilha quando uma amostra foi colhida.
- Siga as linhas com os maiores números até o recuo mais profundo. É ali que a thread passou a maior parte do tempo.
- Se as linhas mais profundas da thread principal forem chamadas de espera, como
mach_msg,__psynch_cvwaitou__semwait_signal, a thread estava bloqueada esperando outra coisa. - Se as linhas mais profundas forem funções do próprio app com números altos, a thread estava ocupada trabalhando.
- A seção “Sort by top of stack”, perto do fim, lista as funções que estavam rodando com mais frequência, um resumo rápido dos mesmos dados.
- A lista Binary Images, no final, dá o nome dos frameworks e bibliotecas carregados no processo.
Como salvar uma amostra em arquivo pelo Terminal
O comando sample dá mais controle que o Monitor de Atividade. A duração padrão é de 10 segundos, e você pode mudá-la.
- Abra o Terminal em Aplicativos > Utilitários.
- Encontre o ID do processo com
pgrep -lx Safari, trocando Safari pelo nome do processo. - Execute
sample <PID> 10 -file ~/Desktop/sample.txtenquanto o problema está acontecendo. - Abra o arquivo na sua Mesa ou anexe-o a um relatório de bug.
Quando uma amostra ajuda e quando não ajuda
Uma amostra é um retrato de um único processo. Use-a quando você já sabe qual app é o problema.
- Ajuda: um app está travado, um processo mantém a % CPU alta ou um app fica lento em uma tarefa específica que você consegue repetir.
- Ajuda menos: o Mac inteiro está lento e você não sabe por quê. Um spindump, que cobre todos os processos, serve melhor para isso.
- Não ajuda: o problema já passou. Uma amostra só mostra o que aconteceu enquanto ela rodava.
Como mandar uma amostra para um desenvolvedor
Uma amostra sozinha já é útil, mas uma nota curta facilita muito a vida de quem vai resolver.
- Extraia a amostra enquanto o app está travado ou ocupado, não depois que ele se recupera.
- Salve o relatório como arquivo de texto em vez de copiar só uma parte. Os desenvolvedores precisam do call graph inteiro e da lista Binary Images.
- Anote o que você estava fazendo quando o problema começou, como o arquivo que abriu ou o botão em que clicou.
- Inclua a versão do app e a sua versão do macOS. As duas também aparecem no cabeçalho do relatório, ao lado de Version e OS Version.
- Envie pela página de suporte ou pelo rastreador de bugs do app, ou para a Apple pelo Assistente de Feedback se o app for da Apple.
Perguntas frequentes
O que faz Extrair Amostra do Processo no Monitor de Atividade?
Registra o que um processo está fazendo por cerca de 3 segundos e mostra um relatório das threads dele e do código que estavam executando. Os desenvolvedores usam isso para diagnosticar travamentos e CPU alta.
É seguro extrair uma amostra de um processo?
Sim. A amostra só observa o processo. Ela não o altera nem o interrompe.
Quando devo extrair uma amostra de um processo?
Extraia a amostra enquanto o problema está acontecendo, por exemplo quando um app está travado ou usando muita CPU. Uma amostra feita depois que ele se recupera não vai mostrar a causa.
Quanto tempo leva Extrair Amostra do Processo?
No Monitor de Atividade, ela registra cerca de 3 segundos. O comando sample no Terminal registra 10 segundos por padrão, ou o número de segundos que você indicar.
Um relatório de amostra contém informações pessoais?
Ele contém o nome do processo, caminhos de arquivos e as bibliotecas carregadas, e os caminhos podem incluir o seu nome de usuário. Leia-o antes de publicá-lo em qualquer lugar público.
Por que a amostra mostra pontos de interrogação em vez dos nomes das funções?
Os nomes dos símbolos não estavam disponíveis para aquelas partes do app. O desenvolvedor ainda consegue associar os endereços ao código dele, então mande o relatório como está.
Relacionados
Procurando algo melhor que o Monitor de Atividade? Veja as melhores alternativas ao Monitor de Atividade para Mac ou navegue por todos os termos do glossário.