Crie um dump principal ao executar um programa com o sudo?

1

Os núcleos aparentemente não são descartados quando o uso de sudo apesar de ulimit -c ser definido como ilimitado. Existe alguma maneira de contornar isso?

    
por Catskul 20.07.2011 / 09:39

2 respostas

0

Parece que isso pode ser feito usando a opção -s como:

sudo -s "ulimit -c unlimited; ./segfaultProg"

No entanto, 2 ressalvas:

  1. Talvez seja necessário definir o parâmetro suid_dumpable com sysctl -w kernel.suid_dumpable=2
  2. Você pode precisar remover um núcleo antigo do caminho. Aparentemente existem regras especiais em que ele pode se recusar a escrever um núcleo se o bit suid estiver definido, e já existe um núcleo lá.

Veja o seguinte para detalhes:

link

    
por 20.07.2011 / 23:36
3

O sudo irá redefinir as configurações do dump principal, como acontece em muitos outros estados do ambiente. Você pode executar o programa por meio de um auxiliar que primeiro habilita os despejos principais e, em seguida, executa o programa. Crie, por exemplo, um wrapper /usr/local/bin/coredump e, em seguida, chmod +x :

$ cat /usr/local/bin/coredump

#!/bin/sh
ulimit -c unlimited
exec "$@"

Então

sudo /usr/local/bin/coredump /your/crashing/program
    
por 20.07.2011 / 19:48