Link-time optimization (LTO) is a very powerful compiler-optimization technique. As I noticed, it does not go very well together with debugging object-oriented programs under GCC, at least for AVR MCUs. I noticed that in the context of debugging an Arduino program, and it took me quite a while to figure out that LTO is the culprit.
Continue readingTag: avr-gdb
Debugging(4): Stub it out!
How can you use a stub in order to squash your software bugs? This blog post shows how to arrive in 7 easy steps at a working debugging solution using a gdb-stub for some 8-bit AVR MCUs. The only additional hardware you need is an ISP programmer in order to burn a new bootloader (well, if you are satisfied with a very slow-running program, you do not even need this).
Debugging(3): Debugging is Like Being the Detective in a Crime Movie Where You are Also the Murderer
One has to add to the title (quoted from a tweet by Filipe Fortes) that the detective suffers from memory loss. Otherwise, the case could be solved easily. Similarly, with debugging: If I only knew what nasty things I have hidden in the source code, I could just remove them – but I simply do not know. In this blog post, we will have a look at what kind of tools one could use to find the skeletons hidden in the closet.
I’m Sorry, Dave, I Can’t do That
Gdb, the GNU debugger, is probably the most used open source debugger for embedded systems. The AVR version of GDB on the Mac is unfortunately not very cooperative. If you try to read an elf file, you get the following funny message (reminding us of HAL9000):
I’m sorry, Dave, I can’t do that. Symbol format `elf32-avr’ unknown.
But with the right homebrew formula, one can teach GDB some new tricks …
EDIT: The problem has been solved by the homebrew maintainers.