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_cvwait ou __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.

  1. Abra o Terminal em Aplicativos > Utilitários.
  2. Encontre o ID do processo com pgrep -lx Safari, trocando Safari pelo nome do processo.
  3. Execute sample <PID> 10 -file ~/Desktop/sample.txt enquanto o problema está acontecendo.
  4. 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.

  1. Extraia a amostra enquanto o app está travado ou ocupado, não depois que ele se recupera.
  2. 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.
  3. Anote o que você estava fazendo quando o problema começou, como o arquivo que abriu ou o botão em que clicou.
  4. 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.
  5. 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.