Итак, теперь я понимаю, что получаю исключение ARM Data Abort - я вижу, как заманить само исключение (плохой адрес в библиотеке STL), но я хотел бы вернуться назад кадр стека перед исключением. Я использую инструментальную цепочку IAR, и он говорит мне, что стек вызовов недоступен после исключения - есть ли уловка, чтобы убедить инструмент показать мне стек вызовов? Спасибо за всю быструю помощь!ARM Data Abort error exception debugging
ответ
, если вы посмотрите на ARM ARM (Справочное руководство по архитектуре ARM, просто «arm arm»), Model Programmers -> Режимы процессора и регистры. Когда вы находитесь в режиме прерывания, вы получаете привилегию, поэтому вы можете переключиться с отмены, чтобы сказать супервизор, а затем сделать копию r13, затем переключиться обратно в режим прерывания и выгрузить стопку из копии r13. Ваш r14 также сообщает вам, где произошло прерывание.
Я бы не удивился, если это прерывание было от выравнивания. Пытаясь прочитать/записать слово с адресом с чем-то другим, кроме нулей в младших двух битах или полусловом с lsbit набора адресов. Фактически, если вы берете реестр ссылок и дамп регистров (r0-r12), так как abort и user/supervisor используют одно и то же пространство регистров, вы можете посмотреть инструкцию, которая вызвала прерывание и адрес, чтобы увидеть, действительно ли это было проблема выравнивания или что-то еще. Обратите внимание, что pc - это одна, две или три инструкции вперед в зависимости от большого пальца режима или руки, у которой был прерван, если вы вообще не используете большой палец, но об этом не о чем беспокоиться.
- 1. C# thread abort exception
- 2. ARM, gdb debugging показывает флаги
- 3. Data Abort on A20 SoC
- 4. C++ regex abort error
- 5. mysqli error debugging
- 6. ARM не производит UNALIGNED Exception
- 7. Thread Abort Exception in .NET 4.5
- 8. SQL Exception Data
- 9. Android FATAL EXCEPTION: AsyncTask # 5 и Error parsing data org.json.JSONException
- 10. Replicate IO Exception Error
- 11. Javascript error uncaught exception
- 12. Format Error Java Data
- 13. Debugging данные Service-Request-Exception на WCF-Data-услугах во время добавления новой организации
- 14. C: Runtime Error Verdict (Help debugging)
- 15. local atlassian stash server error debugging plugin
- 16. Android Debugging wont work XSLT error
- 17. exception System.Reflection.TargetInvocationException error
- 18. C# -NullReference Exception Error
- 19. JQuery Uncaught Exception Error
- 20. Fatal Exception error Android
- 21. NullPointer Exception Error
- 22. Fatal Error PDO Exception
- 23. Laravel Запрос Exception Error
- 24. Fatal Exception Error: main
- 25. Анализировать Exception Error
- 26. SQL Синтаксис Exception Error
- 27. arm renesas toolchain linker error
- 28. SVM Training Data Error
- 29. Invalid User Data Exception - Android
- 30. gdb ARM Cortex-M exception Unwinding
Определенно получить оружие, если вы еще этого не сделали. Это невероятная книга. Прерывание может происходить от выравнивания и в зависимости от того, как вы настроили свой mmu/mpu только незаконный адрес. Я использую базовое ядро 926ejs на основе OMAP, и на самом деле есть регистры, которые будут хранить адрес прерывания, поэтому обязательно проконсультируйтесь со спецификацией. – ThePosey
Спасибо - я проверю, является ли проблема выравниванием или плохим указателем. Если это просто выравнивание, могу ли я вернуться из исключения? У меня есть ручка ARM, я буду изучать ее. – Jeff
Думаю, вам нужно выяснить, почему это произошло. Если это выравнивание, то ловушка помогает вам не причинять вам вреда. Да, вы можете просто вернуться (к инструкции после проблемы), независимо от проблемы, но доступ к памяти, который он должен выполнить, не произойдет, и вы, скорее всего, потерпите неудачу в другом месте, потому что нужные вам данные не были прочитаны или написаны. Вы даже можете отключить прерывания данных выравнивания, но это просто затрудняет поиск реальной проблемы. –