내 STM32F3 디스커버리 보드 C++로 개발 및 표준 : : 대기열로 양단 큐를 사용하고 있습니다. 내 코드를 (ST-link 또는 시뮬레이터가있는 장치에서 직접) 디버깅하려고하면 main()에 내 코드를 입력하기 전에 코드가 결국 중단 점에서 멈 춥니 다. 그러나 SystemInit() 보드 잘 구성합니다.와 push_back()는 입력하기 전에 중지 할 프로그램을 일으키는 주()
코드에서 주석으로 문제를 해결할 때 push_back() 및 push_front 사용하여이 동작을 추적했습니다. disassmebly 통해 그것을 사용 후 중단 점 명령 BKPT 실행을 중지하고 실행을 다시 시작한 후에 더 이상 이동하지 않는 것으로 나타났습니다. 이 명령은 호출 경로, _sysopen() 호출의 일부입니다 : 더 __rt_lib_init_atexit_1
이 없기 때문에 어떤 흥미 롭하기와 push_back를 사용하지 않을 경우 누락 된 _initio
에 호출,이다
__main -> __scatterload -> __scatterload_null -> __rt_entry -> __rt_lib_init -> __rt_lib_init_atexit_1 -> _initio -> freopen -> _sysopen
. push_back을 도입하면 코드 크기도 10kB에서 34kB가됩니다.
이 나쁜 구성의 결과 일 수도 있고 내가 다른 IDE를 시도해야한다? 나는 아이디어가 없어.
당신은 실제 C++ 코드의 무언가를 보여줄 수 있습니까? 한 행을 제거하면 오류가 발생하지 않는다는 사실은 반드시 그 행에 오류가 있음을 의미하지는 않습니다. – Antonio
@Antonio 물론,보세요 : https://gist.github.com/BetaRavener/5957167. push_back 행을 주석 해제하면이 문제가 발생합니다. – Raven
scale_buffer 선언은 어떻게됩니까? – Antonio