Weird exception thrown when using simulavr with avr-gdb

為{幸葍}努か 提交于 2019-12-11 08:36:52

问题


I am debugging a program that I have written for the AVR architecture and compiled using avr-gcc with the -g argument.

I launch simulavr using the following command: simulavr --device atmega8 --gdbserver

Then I invoke avr-gdb and do (gdb) file main.elf as well as (gdb) target remote localhost:1212

Once debugging has started, I can successfully step through the assembly portion of my program .init et al. However, once jmp main is executed and a call to another function is made, simulavr throws the following exception: Assertion failed: (m_on_call_sp != 0x0000), function OnCall, file hwstack.cpp, line 266. Abort trap: 6

It has something to do with the pushing a frame to the stack, but I can't quite put my finger on how to fix it.


回答1:


That stack value is very far from what it should be. At the start of your program, it should be near the end of RAM, not at the beginning.

It is likely to be some problem with simulavr not configuring RAM properly for your device. A quick look for the source code shows that the stack pointer is set to 0 if the simulator can't determine the correct value.

Did you include -mmcu=atmega8 in the command line when compiling? Try adding -V switch to the simulavr command for more clues.



来源:https://stackoverflow.com/questions/18431726/weird-exception-thrown-when-using-simulavr-with-avr-gdb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!