Falta debuginfos separados

1

Estou tentando depurar um código usando o GDB em uma máquina do Fedora. Ela produz essa mensagem toda vez que eu a executo.

Missing separate debuginfos, use: debuginfo-install glibc-2.18-12.fc20.x86_64 libgcc-4.8.3-1.fc20.x86_64 libstdc++-4.8.3-1.fc20.x86_64

Minhas perguntas:

  1. Esses pacotes devem estar no GDB por padrão?
  2. Qual é a função de cada um desses pacotes?
  3. Em ambientes reais de produção, esses pacotes devem ser instalados para o GDB?
  4. Tudo bem se eu não instalar esses pacotes? qual será o efeito?
por Nayana Adassuriya 06.08.2014 / 06:29

1 resposta

3
  1. Não. gdb é empacotado por um mantenedor, glibc é empacotado por outro mantenedor, gcc , libstdc e assim por diante, todos empacotados por mantenedores diferentes. Para empacotar o debuginfo para estes, juntamente com gdb , seria necessária uma coordenação considerável. Cada vez que um dos pacotes fosse alterado, o mantenedor gdb teria que empacotar e liberar. Ficaria muito complicado administrar. gdb também pode depurar outros idiomas, por exemplo java , que não precisariam do debuginfo para as bibliotecas listadas.

  2. Os pacotes debuginfo contêm o código-fonte e os símbolos retirados do executável. Eles são necessários apenas durante a depuração, portanto, são redundantes durante o uso normal. Eles ocupam uma boa quantidade de espaço, portanto, são removidos durante as versões de produção.

  3. Depende. A maioria dos códigos C usará glibc etc. No entanto, se você estiver depurando o pacote X e não precisar se aprofundar nos componentes internos de glibc , você poderá gerenciar sem instalá-lo. Se você quiser seguir o código em gdb até o nível baixo glibc ou se achar que há um bug na própria biblioteca, precisará instalá-lo. Por outro lado, algum código C pode ser estaticamente vinculado e deve ter tudo o que é necessário em seu próprio pacote debuginfo, ou um aplicativo pode ser escrito em outro idioma. Nenhum deles precisaria ser instalado.

  4. Sim. O efeito de não instalar esses pacotes é que você não será capaz de depurar efetivamente as rotinas fornecidas por eles. Como no item 3 acima, tudo depende se você precisa depurar nesse nível ou não.

Nota: você verá que muitos aplicativos foram otimizados (com o -O flag no compilador) e não depurem tão bem com o debuginfo. Uma solução alternativa é recompilar sem qualquer otimização.

    
por 06.08.2014 / 07:54

Tags