A documentação para o GNU binutilsstrip alude à razão, mas não é explícita, mencionando na descrição --only-keep-debugdessa
Nota - os cabeçalhos das seções removidas são preservados, incluindo seus tamanhos, mas o conteúdo da seção é descartado. Os cabeçalhos da seção são preservados para que outras ferramentas possam corresponder o arquivo debuginfo ao executável real, mesmo que esse executável tenha sido realocado para um espaço de endereço diferente.
Ou seja, a menos que solicitado explicitamente por meio da -Ropção, stripmanterá os cabeçalhos das seções para ajudar outros programas (inclusive gdb) a fazerem seu trabalho.
A página Uso correto do comando strip (parte da Engenharia Reversa usando o Sistema Operacional Linux ) observa
A execução do stripcomando em um executável é o método de proteção de programa mais comum. Em sua operação padrão, o stripcomando remove a tabela de símbolos e qualquer informação de depuração de um executável. É assim que é normalmente usado. No entanto, ainda há informações úteis que não são removidas.
e continua a enumerar várias coisas úteis que podem ser deixadas para trás - para análise de um executável "despojado".
No Learning Linux Binary Analysis , isso é reiterado, comentando que os cabeçalhos de seção normalmente só estão ausentes quando alguém os removeu deliberadamente , e sem os cabeçalhos de seção gdbe objdumpsão quase inúteis.