gdb stl funções ainda mostram como inlined após desabilitar otimizações

0

Eu criei o gdb-7.12 com suporte a python no meu Ubuntu 14.04 e habilitei uma bonita impressão e configurei meu arquivo gdbinit seguindo o link .

Mas sempre que imprimo o tamanho de qualquer contêiner:

p ivec.size()
Cannot evaluate function -- may be inlined

Aqui está o MCVE que estou usando

#include <vector>

using namespace std;

int main(){
  vector<int> ivec;
  return 0;
}

Eu tentei diferentes opções de compilação

g++-6 -g -O0 -fno-inline-functions -gdwarf-2 Source.cpp --std=c++14

Na verdade, tentei todas as combinações das opções acima e sempre o mesmo problema.

Eu tentei mudar para o gdb-7.11 (também construído a partir do código-fonte) para ver se ele corrige o problema e também mudou para g ++ - 4.8, nenhum deles parece corrigir o problema.

O que estou fazendo errado? Existe alguma ordem específica em que você tem que dar as opções? Existe uma maneira de verificar se a opção -O0 está funcionando?

    
por Vikash B 21.10.2016 / 12:06

1 resposta

0

Você deve ter uma chamada para vector :: size (), então a função é compilada. Ele não é compilado porque esse é um modelo de classe. Eu acho que a chamada também deve estar no mesmo contexto, mas eu não tenho certeza disso.

    
por 29.06.2017 / 08:59

Tags