-->
Mostrando postagens com marcador Process Explorer. Mostrar todas as postagens
Mostrando postagens com marcador Process Explorer. Mostrar todas as postagens

quinta-feira, 28 de janeiro de 2010

Como descobrir a que processo pertence uma janela / diálogo / mensagem.

Eu tive esse problema ontem. Aparentemente do nada, esta mensagem estava aparecendo na tela:




A mensagem original tinha 1314 pixels de largura e tive que recortar e reduzir para poder exibir aqui. O pedaço suprimido continua a seqüência incompreensível de caracteres.

Não há nenhuma indicação de que programa está exibindo a mensagem. Usei ALT+TAB para alternar entre os programas abertos e depois minimizei e restaurei cada programa para ver se era uma das maluquices de "Z-order" que de vez em quando acontecem no Windows, mas não era. Nenhuma aplicação assumiu a paternidade da mensagem.

Cliquei em Abort e a mensagem sumiu, mas depois de cinco minutos tornou a aparecer.

Deixei a mensagem sendo exibida e fechei vários programas. Continuou lá.

Eu sabia que podia descobrir indiretamente quem estava fazendo isso usando o Process Monitor, mas o caminho por ele é suficientemente complicado para eu sempre procurar um meio mais fácil antes. Enquanto eu fazia os testes eu estava tentando me lembrar de qual utilitário me permitia descobrir a que processo pertencia uma janela qualquer. Só parei de chutar quando me lembrei: O Process Explorer também faz isso.


Basta clicar no ícone em forma de alvo e arrastar até algum elemento da janela que você quer testar, até que esse elemento se destaque. No meu caso eu precisei arrastar sobre um dos botões (Abort, Retry) para o destaque aparecer.

Ao soltar o botão do mouse o Process Explorer mostra qual é o processo "pai".



Edit: Conforme foi bem lembrado no primeiro comentário, o Windows já tem suporte embutido a isso no Gerenciador de Tarefas. Basta que a janela apareça na aba "aplicações":



E isso funciona desde o Windows 2000.

Foi então que "caiu a ficha". Alguns minutos antes do problema começar, no momento em que ligava o meu adaptador bluetooth o Netmeter travou (provavelmente se atrapalhou com as conexões de rede bluetooth criadas repentinamente pelo adaptador). Eu fechei o programa e "esqueci". Só não percebi que eu havia apenas fechado a janela mas o processo continuava lá, acusando erro.

Vergonhosamente, essa não foi a única coisa que eu eu não percebi.

Eu estou usando o Windows Seven, e sua janela do ALT-TAB dá mais informações que o XP:


O diálogo é a segunda janela da esquerda para a direita. Perceba como o Seven mostra o ícone da aplicação responsável. Eu estou tão acostumado a simplesmente dar ALT-TAB até chegar até o que quero, apenas conferindo o título, que estava cego para esse detalhe acrescentado pelo Seven.

sábado, 28 de novembro de 2009

Como saber que processo está usando uma porta serial.

Nota: Se você leu o título e pensou "mas quem é que ainda usa portas seriais?" deve ser novo aqui neste blog.

Eu esbarrei no problema fazendo testes com o Windows Seven. Nenhum dos programas para portas seriais que eu tinha (incluindo os feitos por mim mesmo) funcionava, não importando o que eu fizesse. A princípio achei que fosse frescura do Seven, mas fiquei intrigado ao não encontrar nenhuma menção a isso em uma rápida busca no Google.

Será que havia algum processo usando a porta? Não era para haver, porque a instalação era recente e eu não havia instalado nada consciente de que usasse portas seriais. O indispensável Process Explorer me deu a resposta. Basta usar Find - Find Handle or DLL... para procurar por "serial":

Edit: O Seven tem seu próprio meio de ver isso, sem requerer o Process Explorer. Mas falarei sobre isso depois.



\Device\Serial0 é o que costumamos chamar de "COM1", que é justamente a porta que eu não estava conseguindo usar. Basta clicar na linha com o processo para o PEx mostrar o processo na sua janela principal. Lá basta passar o mouse por cima do nome para ver quem é:



Este é o programa que meu sintonizador de TV instalou para monitorar o seu controle remoto. O danado (e por isso eu nem pensei nele) é que o controle é USB e então o programa não deveria estar abrindo minha porta serial.

Depois de "matar" o processo o problema foi resolvido.

Mais tarde eu constatei que o programa tinha as duas opções (USB e serial) e por algum motivo se configurou para a opção errada no Seven. Eu havia instalado o mesmo programa antes no XP, onde ele havia se configurado para a opção certa, por isso nem sabia que existiam opções.

quinta-feira, 10 de abril de 2008

Acompanhando o consumo de CPU de uma aplicação

Ou, "como o GMAIL atrapalha a execução de filmes."

Este post começou a ser escrito em 19/01 e só agora tive tempo de terminar o texto.

Há semanas, todas as vezes que eu tentava assistir a um filme no PC, tinha problemas com engasgos periódicos na execução. Foi fácil descobrir que isso estava ocorrendo porque a CPU estava "topando" brevemente em 100%, mas por que isso estava acontecendo se a execução do filme não requeria mais que 40% da CPU? Anteontem eu perdi a paciência e resolvi investigar.

O Windows 2000/XP já embute um recurso para que você possa acompanhar o consumo de CPU do sistema inteiro, mas embora isso seja muito útil não basta quando você precisa descobrir qual aplicação entre as muitas rodando está dando "picos" de consumo aparentemente aleatórios. Seria necessário que o Windows mostrasse um gráfico do consumo por aplicação, mas ele mostra apenas o consumo instantâneo, que não ajuda muito quando você está procurando por algo que dura uma fração de segundo.

Por sorte, o freeware Process Explorer (vou chamar de "PEx" daqui em diante) também faz isso.

Talvez vocês se lembrem da última vez que o PEx me ajudou a resolver um problema. Na ocasião eu ainda não sabia que era possível ver mais informações sobre cada processo. Basta clicar duas vezes sobre seu nome pra ver muito mais informação. Mas para o propósito deste post, vou me limitar a exibir o "Performance Graph".



Olhando rapidamente você pensaria que é o monitor do Windows XP, mas note o ícone do Firefox, o título da janela e as outras abas. Existem aperfeiçoamentos sutis: passe o mouse sobre o gráfico e você vai ver o percentual exato de CPU naquele instante e também a hora em que ocorreu . Esse pequeno detalhe já nos permite medir o tempo entre uma ocorrência e outra.

Assim como o monitor do XP, é possível ajustar a largura da janela para ter mais tempo de gráfico.



Você pode ter uma janela aberta para cada processo, se quiser. Mas se você está tentando descobrir que processo está dando picos repentinos de consumo de CPU e tem uns 20 processos em execução (meu PC tem 32 neste exato momento) abrir uma janela para cada um deles não é nada conveniente (mas eu o faria, se fosse o único jeito). Mark Russinovich deve ter a mesma opinião porque o PEx tembém facilita sua vida nesse sentido.

Clique em View -> Select Columns -> Process Performance
Marque CPU History

Uma nova coluna aparecerá, com o histórico de CPU de cada processo!



Eu deixei o PC parado por vários minutos antes de tirar os snapshots deste post. Veja como o Firefox é a única aplicação mal comportada do grupo.

Como no PEx você pode excluir, mover e redimensionar colunas, o acompanhamento fica ainda mais fácil:



Não era exatamente culpa do Firefox. Eu saí fechando aba por aba (geralmente nunca tenho menos que 40 abertas ao mesmo tempo) e acabei descobrindo que era a aba do Gmail. Eu não sei se existe alguma configuração do Gmail que minimize isso e o jeito no momento está sendo fechar a aba do Gmail enquanto assisto a qualquer filme.