Existe uma maneira de “baixo nível” de determinar que syscalls um processo está chamando?

2

Eu tenho um binário que está congelando, e esse binário passa a ser meu gerenciador de pacotes, me impedindo de instalar novos pacotes.

Em execução no gdb, posso obter um rastreio de retorno quando o processo está congelado e obtenho:

#0  0xb6cd9abc in syscall () from /lib/libc.so.6                                                                                                                                                                  
#1  0xb60a99b0 in startParsing () from /usr/lib/libexpat.so.1

Parece que o expat está fazendo um syscall que nunca retorna.

Existe uma maneira de "baixo nível" para eu saber mais sobre o syscall? Gostaria de instalar strace, mas como esse é o gerenciador de pacotes que está falhando, não consigo entrar com facilidade na máquina.

A CPU é um braço, o que torna um pouco mais complicado o download de binários prontos.

    
por user50849 08.05.2018 / 17:37

1 resposta

2

Supondo que você tenha o strace instalado:

strace /path/to/binary

edit: Eu não li o último bit que dizia que você não tem strace, você deveria ser capaz de baixar um tarball strace e compilá-lo sem usar o gerenciador de pacotes. Você pode construí-lo estaticamente em outra máquina e copiá-lo se não tiver ferramentas de compilação instaladas.

    
por 08.05.2018 / 17:44