Greatly increased GDB memory and CPU usage with newest embedded ARM toolchain
R. Diez
rdiezmail-binutils@yahoo.de
Sat Apr 17 21:30:42 GMT 2021
Hi all:
I recently upgraded my cross-compilation toolchain for ARM Cortex-M4F to these component versions:
Binutils 2.36.1
GCC 10.3
GDB 10.1
For more information, see this comment of mine:
https://sourceware.org/bugzilla/show_bug.cgi?id=23710#c18
I noticed that GDB is now using much more RAM than before, and not just for LTO builds, which is what that bug report was about.
I just tried with this open-source firmware of mine:
https://github.com/rdiez/JtagDue
For a debug build (non LTO), firmware.elf weighs around 1.5 MB. Most of it is debug information, because the firmware.bin file only weighs 76 kB.
The debug information is not compressed.
When GDB needs to load the symbols, because you are touching some C++ source code, there is a noticeable pause, and GDB uses 385 MiB of RAM. Is that not too much for this smallish project?
I tried a release build, compiled with LTO, and GDB became unresponsive in the same situation. I killed GDB manually when it got to consume over 2 GiB of RAM, because I have had such a misbehaving GDB freeze my Ubuntu 20.04.2, not even the mouse was moving. I do not have swap, so I would have expected the Out of Memory Killer to kick in, but it did not. I had to physically switch my computer off.
Before I spend more time investigating this issue: is this a known problem?
The bug report mentioned above seems to suggest that there is something foul in this area, but there does not seem to be much interest in the past months. The trouble is, I am seeing now pauses and high memory usage even in non-LTO builds. GDB is still usable, but it is becoming annoying.
I have been using this toolchain for many years, and I am getting this kind of problem with GDB only relatively recently.
Best regards,
rdiez
More information about the Gdb
mailing list