O que acontece entre o clique duplo no gerenciador de arquivos e o lançamento do aplicativo?

0

Qual é a cadeia de aplicativos envolvidos no processo de abertura de um arquivo de um gerenciador de arquivos?

Considere esses dois momentos, digamos, o Xfce 4 e uma planície simples arquivo de texto configurado para abrir em Mousepad:

  1. Clique duas vezes no arquivo no Thunar ou Nautilus, etc.

  2. O Mousepad é iniciado com o arquivo

O pano de fundo é que eu tenho um bug que parece acontecer mesmo quando eu uso gerenciador de arquivos diferente, bem como aplicativo. Para exemplo, cenários Nautilus / Mousepad ou Thunar / Libreoffice Calc sofrer com esse bug também.

É o Debian Jessie amd64, FTM.

    
por Alois Mahdal 13.11.2013 / 00:44

1 resposta

1

Você pode descobrir o que está acontecendo nos bastidores de um aplicativo usando a ferramenta strace . Basta invocar a ferramenta em questão da seguinte forma:

 $ strace <app>

Esteja avisado de que haverá um lote de saída gerada por essa ferramenta, então você provavelmente desejará despejá-la em um arquivo.

 $ strace -o <logfile> <app>

Exemplo

Primeiro, colete o log.

$ strace -o trace.log thunar

Quando houver uma falha ou você fechá-la, você poderá revisar os registros. Aqui está um dump do arquivo de log.

$ less trace.log
execve("/usr/bin/thunar", ["thunar"], [/* 93 vars */]) = 0
brk(0)                                  = 0x13aa000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7913726000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=243371, ...}) = 0
mmap(NULL, 243371, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f79136ea000
close(3)                                = 0
open("/usr/lib64/libX11.so.6", O_RDONLY) = 3
read(3, "7ELF
 $ strace <app>
 $ strace -o <logfile> <app>
$ strace -o trace.log thunar
$ less trace.log
execve("/usr/bin/thunar", ["thunar"], [/* 93 vars */]) = 0
brk(0)                                  = 0x13aa000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7913726000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=243371, ...}) = 0
mmap(NULL, 243371, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f79136ea000
close(3)                                = 0
open("/usr/lib64/libX11.so.6", O_RDONLY) = 3
read(3, "7ELF%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre% 7114%pre%%pre%%pre%"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1308808, ...}) = 0
mmap(0x34e9a00000, 3403160, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x34e9a00000
....
%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre% 7114%pre%%pre%%pre%"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1308808, ...}) = 0 mmap(0x34e9a00000, 3403160, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x34e9a00000 ....

Referências

por 13.11.2013 / 01:11