Hi All,
Anyone knows if uVision can register the maximum stack usage in debug mode?.. Is very useful to run the code in the target and then check the maximum usage of the stack in any moment in order to be safe about the size. Perhaps anyone knows a better way to calculate it.
Thanks
This is easy to accomplish. Fill the stack area with a known pattern (0xDEADBEEF or whatever) at your program initialization in the code or using debug macros. Run the program for a while. Inspect stack area to see how much of the pattern was overwritten (can be automated as well.)
Hi,
hehe... very good solution, I will do that, but, I think the debuger can do it wihtout need to write code to fill it.
I think the debuger can do it wihtout need to write code to fill it
I agree. That would be useful functionality to have.
The method described can be quite a useful indicator, but remember ...
when you look at the stack after your run don't assume it is the absolute maximum use, because it may not be. It is the use of a run up to that point. The absolute maximum would be the result of worst case nestings and might only occur infrequently.
Any such test should be done togeter with a code coverage analysis - what parts of the code was executed?
Another thing to remember is that some processors have a unified stack also including interrupts. So knowledge about the used processor is needed.
Hi
Can you describe more about it?what should i do ?Could you please make an example by code?
Where part i should write this code ?
What chip do you have?
Best place to "memset" the stack memory is in the Reset Handler, before you've called anything. If the routines managing the statics clears the memory, you could do the filling in main() as you enter.
You're filling it with a pattern that a) you can observe in a Memory View window, or b) walk upward with a pointer until the pattern can't be read any more. Not exactly complicated stuff here.
Hello again
i use LPC1768. Can you tell me what should i do and how can i find how many stack byte i need?
Hi again
There is a note. When i clean the project then rebuild all project then every thing are OK