Nem todos os aplicativos deixam um log para trás, isso depende da codificação por trás deles, mesmo os mais complexos podem não ter recursos de registro.
Se um aplicativo tiver recursos de depuração, detalhados ou de log, essa opção será declarada na página man
desse aplicativo, ou seja: man ssh
mostrará que, se você usar ssh -v
, obterá uma saída detalhada do que o comando está fazendo em segundo plano ao abrir um túnel para um host, ssh -y
será enviado para o syslog em vez de stderr.
Mas alguns aplicativos simplesmente não são programados com essa capacidade. Para aqueles strace
pode ser usado como um utilitário de depuração para qualquer aplicativo, ele registra todas as chamadas e sinais do sistema, eu acho que é útil quando eu tenho quaisquer falhas inesperadas durante a execução de um aplicativo, e na maioria das vezes isso me ajuda problemas de classificação com aplicativos que não possuem uma opção de depuração ou de registro incorporada ao código, ou seja, strace ls
outputs:
execve("/usr/bin/ls", ["ls"], [/* 95 vars */]) = 0
brk(0) = 0x20b6000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd7e5ca3000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=118369, ...}) = 0
mmap(NULL, 118369, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd7e5c86000
close(3) = 0
open("/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "7ELFexecve("/usr/bin/ls", ["ls"], [/* 95 vars */]) = 0
brk(0) = 0x20b6000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd7e5ca3000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=118369, ...}) = 0
mmap(NULL, 118369, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd7e5c86000
close(3) = 0
open("/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "7ELF%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre%l%pre%%pre%%pre%%pre%%pre%%pre%"..., 832) = 832
...
...
...
%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%>%pre%%pre%%pre%%pre%l%pre%%pre%%pre%%pre%%pre%%pre%"..., 832) = 832
...
...
...
Isso permite que você tenha uma ideia do que está acontecendo e por que um aplicativo não consegue parar em seu código.