Pergunta

Exatamente o que o título diz. Estou usando MSVC ++ 2008 Express, e meu construtor da classe nunca é executado quando compilado no modo de versão. Ele faz o trabalho no modo de depuração.

Estou fazendo algo como:

ClassTest test;
test.DoIt();

Os pontos de interrupção no gatilho DoIt();, mas pontos de interrupção em ClassTest::ClassTest(); não.

Foi útil?

Solução

Apenas um pensamento - que poderia ser otimização do compilador no modo de versão que está impedindo o ponto de interrupção ser atingido. Isso pode acontecer se o construtor não está fazendo nada (ou seja, é um não-op). Tente adicionar algumas declarações simples para o construtor, por exemplo.

  1. Declare uma variável local
  2. Inicializar a variável
  3. Use lo de alguma forma (por exemplo, imprimi-lo)

Em seguida, adicione um ponto de interrupção no passo (3) acima, e ver se isso breakpoint é hit.

Você pode ver todos os tipos de problemas de depuração estranhas com a maneira como pontos de interrupção são atingidos no modo de versão, por causa das otimizações que são feitas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top