Como saber quais comandos são executados quando faço algo na GUI

6

Isto é para fins acadêmicos. Eu quero saber quais comandos são executados quando fazemos algo na GUI, por exemplo, criando uma pasta. Eu quero mostrar que os comandos mkdir shell e create folder da GUI fazem a mesma coisa.

    
por user3539 29.12.2012 / 05:20

1 resposta

5

Você pode observar o que o processo faz com o comando strace . Strace mostra as chamadas de sistema realizadas por um processo. Tudo - um processo que afeta seu ambiente é feito através de chamadas do sistema. Por exemplo, criar um diretório só pode ser feito chamando a mkdir chamada de sistema . O comando mkdir shell é um wrapper fino em torno da chamada do sistema com o mesmo nome.

Para ver o que o mkdir está fazendo, execute

strace mkdir foo

Você verá muitas chamadas diferentes de mkdir (76 no total para um mkdir no meu sistema), começando com execve que carrega a imagem binária do processo, então chama para carregar as bibliotecas e arquivos de dados usados pelo programa, chamadas para alocar memória, chamadas para observar o estado do sistema, ... Finalmente o comando chama mkdir e se encerra, terminando com exit_group .

Para observar o que um programa de GUI está fazendo, inicie-o e observe-o apenas durante uma ação. Descubra o ID do processo do programa (com ps x , htop ou qualquer outro visualizador de processo) e, em seguida, execute

strace -o file_manager.mkdir.strace -p1234

Isso coloca o rastreio do processo 1234 no arquivo file_manager.mkdir.strace . Pressione Ctrl + C para parar strace sem parar o programa. Note que algo como inserir o nome do diretório pode envolver milhares ou dezenas de milhares de chamadas de sistema: manipular movimentos do mouse, mudanças de foco e assim por diante é muito mais complexo nesse nível do que criar um diretório.

Você pode selecionar quais chamadas do sistema são registradas na strace output passando a opção -e . Por exemplo, para omitir read , write e select :

strace -e \!read,write,select …

Para gravar somente mkdir chamadas:

strace -e mkdir …

¹ Ok, quase tudo. A memória compartilhada envolve apenas uma chamada do sistema para a configuração inicial.

    
por 30.12.2012 / 02:54