So, I tracked down the main culprit, doing the following, based mainly on John Zwink's answer . Essentially, I just followed his suggestion to just run the “string” in the executable and parse the output.
string my_executable > exec_strings.txt
Then I sorted the result, mainly the following mindriot method :
cat exec_strings.txt | awk '{ print length, $0 }' | sort -n -s | cut -d" " -f2- > exec_strings_sorted.txt
and looked at the longest lines. In fact, it all looked like a crazy patterned bloat, from a specific library. Then I did a little more, considering:
cat exec_strings.txt | wc -l 2928189 cat exec_strings.txt | grep <culprit_libname> | wc -l 1108426
to see that of the approximately 3 million rows that were extracted, it seems that about 1 million of them came from this library. Finally making
cat exec_strings.txt | wc -c 3659369876 cat exec_strings.txt | grep <culprit_libname> | wc -c 3601918899
it became apparent that these millions of lines are very large and make up most of the debug symbol trash. So at least for now, I can focus on this library, trying to remove the root of the problem.
source share