push_back () faz com que o programa pare antes de entrar em main ()

Estou desenvolvendo em c ++ para minha placa Discovery STM32F3 e usando std :: deque como fila. Depois de tentar depurar meu código (diretamente no dispositivo com o ST-link ou no simulador), o código eventualmente pára no ponto de interrupção antes mesmo de inserir meu código em main (). No entanto, SystemInit () configura a placa muito bem ..

Eu rastreei esse comportamento até usando push_back () (e push_front) como comentar do código resolve o problema. Através do disassmebly descobri que depois de usá-lo, a execução para na instrução de ponto de interrupção BKPT e não se moverá mais depois de retomar a execução. Esta instrução faz parte da chamada _sysopen (), com o caminho da chamada:

__main -> __scatterload -> __scatterload_null -> __rt_entry -> __rt_lib_init -> __rt_lib_init_atexit_1 -> _initio -> freopen -> _sysopen

O que me intriga é a chamada para_initio, que está faltando se push_back não for usado, porque não há__rt_lib_init_atexit_1. A introdução do push_back também faz com que o tamanho do código passe de 10 kB para 34 kB.

Isso pode ser resultado de alguma configuração ruim ou devo tentar outro IDE? Estou sem ideias.

questionAnswers(2)

yourAnswerToTheQuestion