I've been bitten in the ass a few times where I would write to an array out of scope. I have been working on a particular firmware for over 2 years and suspect an overflow which by now is close to impossible to find - for example:
uint8_t example[50];
uint8_t example2[100];
for(uint8_t i = 0; i < sizeof(example2); i )
example[i] = i;
I understand that the above code example is primitive. It's only an example of what I am trying to describe.
Is there a package or function available that can detect these "leaks"?
CodePudding user response:
Recent versions of GCC with the flag -Wall
will detect simple errors like the problem in your example, and print a warning.
The tool Valgrind is more advanced, but also more work to configure and use correctly.
There is no tool in the universe that can detect every possible mistake, so start with the easiest to use.
CodePudding user response:
Static analysis can only do so much, but here are a couple of the tools I'm using on a daily basis:
Also, as Tom V pointed out, turn on as many warnings as possible (-Wall
is a minimum - here is a good starting set of warning flags).