push_back () bewirkt, dass das Programm stoppt, bevor main () eingegeben wird

Ich entwickle in C ++ für mein STM32F3 Discovery Board und verwende std :: deque als Warteschlange. Nachdem ich versucht habe, meinen Code zu debuggen (direkt auf dem Gerät mit ST-Link oder im Simulator), stoppt der Code schließlich am Haltepunkt, bevor ich meinen Code überhaupt in main () eingebe. SystemInit () konfiguriert die Karte jedoch einwandfrei.

Ich habe dieses Verhalten auf die Verwendung von push_back () (und push_front) als Kommentar aus dem Code zurückgeführt, um das Problem zu beheben. Durch disassmebly stellte ich fest, dass die Ausführung nach der Verwendung bei der Haltepunktanweisung BKPT stoppt und sich nach der Wiederaufnahme der Ausführung nicht weiter bewegt. Diese Anweisung ist Teil des Aufrufs _sysopen () mit dem Aufrufpfad:

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

Was mich fasziniert, ist der Ruf nach_initio, was fehlt, wenn push_back nicht verwendet wird, weil es keine gibt__rt_lib_init_atexit_1. Durch die Einführung von push_back wird auch die Codegröße von 10 kB auf 34 kB erhöht.

Könnte dies auf eine schlechte Konfiguration zurückzuführen sein oder sollte ich eine andere IDE ausprobieren? Ich habe keine Ideen mehr.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage