Solução de problemas de aplicativo trava no Mac OS X

3

Eu tenho recebido muitas bolas de praia girando recentemente em diferentes aplicativos no OSX. Eles parecem acontecer com grande frequência ao clicar com o botão direito, mas isso não está restrito a um único aplicativo. Isso acontece no Safari, Adium, NetNewsWire, etc. Meu instinto é que há algum recurso / plug-in / rotina comum causando isso, provavelmente de alguma extensão de terceiros ou de qualquer outra coisa que eu tenha ativado.

Qual é a melhor maneira de tentar solucionar esse tipo de problema? Posso de alguma forma despejo o aplicativo pendurado para ver o que ele está tentando fazer? Há algumas coisas que posso fazer para descobrir o que pode estar causando isso?

    
por Tim 17.07.2009 / 01:09

3 respostas

6

Um utilitário para rastrear interrupções é chamado de Spin Control, que é instalado com as ferramentas de desenvolvedor da Apple na pasta /Developer/Applications/Performance Tools . Depois de abri-lo e um aplicativo trava, ele solicita sua senha e começa a coletar dados. Quando o aplicativo falha ou torna-se responsivo novamente, é possível ver o relatório que ele coletou.

Você pode examinar o relatório e examinar as chamadas listadas, que são todas as coisas que o programa estava fazendo (os itens recuados são sub-chamadas). O número ao lado de cada item da lista parece ser quanto tempo foi gasto naquela chamada, então, se você observar os nomes deles (pelo menos os mais inteligíveis), você poderá coletar algumas informações sobre o que foi demorando tanto. Se você encontrar algo de que não tem certeza, também poderá perguntar sobre isso especificamente.

E, se um aplicativo falhar, se você clicar no botão "Relatório", verá uma lista semelhante das ações do programa quando ele falhou, além do erro que foi gerado. Se você observar a descrição do erro e observar o final da lista de chamadas, provavelmente poderá descobrir o que deu errado.

    
por 17.07.2009 / 01:21
4

Obrigado pelas respostas, elas foram muito úteis. O jtbandes deu-me o primeiro passo para resolver o problema, mas eu queria entrar em detalhes das outras partes, caso isso ajude os outros.

Consegui que o problema acontecesse de uma maneira razoavelmente reprodutível com o Adium. Basicamente, inicie o aplicativo, abra uma conversa, digite algum texto e clique com o botão direito do mouse em algum texto. Spinner pela primeira vez após o lançamento, com duração de mais de um minuto.

Então eu comecei a girar controle, fui para as preferências para direcionar apenas Adium, seguiu os procedimentos para causar o problema. Conseguiu obter um relatório de texto sobre o problema e descobriu que o que eu esperava era o problema:

    5531 Thread_7203
  5531 0x30b9
    5531 0x3192
      5531 NSApplicationMain
        5531 -[NSApplication run]
          5531 -[NSApplication sendEvent:]
            5531 -[NSWindow sendEvent:]
              5531 -[NSTextView rightMouseDown:]
                5531 -[NSView rightMouseDown:]
                  5531 -[NSMenu _popUpMenuWithEvent:forView:]
                    5531 -[NSMenu _popUpContextMenu:withEvent:forView:]
                      5531 -[NSMenu _popUpContextMenu:withEvent:forView:withFont:]
                        5531 -[NSCarbonMenuImpl _popUpContextMenu:withEvent:forView:withFont:]
                          5531 _NSPopUpCarbonMenu1
                            5531 _NSPopUpCarbonMenu2
                              5531 _NSPopUpCarbonMenu3
                                5531 _ContextualMenuInsertItems
                                  5531 ContextualMenuInsertItems(MenuData*, unsigned short, AEDesc const*, ContextualMenuHelp const*, unsigned long*, OpaqueContextualMenuItemsRef**)
                                    5531 TContextualMenuPluginList::GetPlugins()
                                      5531 TContextualMenuPlugin::LoadContextualMenuPlugins(FSRef const&, __CFArray*)
                                        5531 TContextualMenuPlugin::LoadCMPluginsFromCFPlugin(FSRef const&, __CFArray*)
                                          5531 0x1d1ee0d6

Então, parecia que eu estava com problemas em um plug-in, mas faltava contexto para detalhes sobre o assunto.

Então eu relançou o Adium, mas desta vez eu também tive o Activity Monitor aberto e selecionei o processo e usei Inspect-> Open Files and Ports para monitorar especificamente o que o aplicativo estava trabalhando. Quando eu repeti os passos para gerar o problema, eu pude pegar o seguinte da listagem (note que novos arquivos / portas abertos aparecem no final da lista, então é mais fácil encontrar o problema olhando para o final da lista). lista):

/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Resources/English.lproj/Localized.rsrc
/Users/tim/Library/Contextual Menu Items
localhost:61506->localhost:26165

A partir disso, pude percorrer os itens em meu diretório local de itens de menu de contexto e determinar o que está causando o problema.

Obrigado pela ajuda.

    
por 17.07.2009 / 17:37
1

Bem, pode ser uma extensão de terceiros ou um disco baixo ou um disco rígido lento. Que tipo de computador é esse? Abra "Preferências do Sistema". Você tem algum ícone em "Outro"? Abra / Biblioteca / InputManagers. Tem algum arquivo lá? Quando um aplicativo trava, force a saída e clique em "Denunciar". Poste o log aqui.

    
por 17.07.2009 / 01:17