push_back () powoduje zatrzymanie programu przed wprowadzeniem main ()

Rozwijam w c ++ dla mojej płyty STM32F3 Discovery i używam std :: deque jako kolejki. Po próbie debugowania mojego kodu (bezpośrednio na urządzeniu z ST-link lub w symulatorze) kod ostatecznie zatrzymuje się na punkcie przerwania przed wprowadzeniem mojego kodu do main (). Jednak SystemInit () dobrze konfiguruje płytę.

Śledziłem to zachowanie, używając push_back () (i push_front), ponieważ komentowanie go z kodu rozwiązuje problem. Dzięki disassmebly odkryłem, że po użyciu, wykonanie zatrzymuje się w instrukcji BKPT punktu przerwania i nie przejdzie dalej po wznowieniu wykonywania. Ta instrukcja jest częścią wywołania _sysopen () ze ścieżką wywołania:

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

Intryguje mnie wezwanie_initio, którego brakuje, jeśli push_back nie jest używany, ponieważ nie ma__rt_lib_init_atexit_1. Wprowadzenie push_back powoduje również, że rozmiar kodu zmienia się z 10 kB do 34 kB.

Czy może to wynikać z jakiejś złej konfiguracji, czy powinienem spróbować innego IDE? Nie mam pomysłów.

questionAnswers(2)

yourAnswerToTheQuestion