I wrote Libbtrace some years ago to allow some kind of introspection in C programs: namely, to be able to inspect the program’s backtrace showing not just the addresses but also the relevant function names. This was useful when the GNU Debugger lacked proper multi-threading support.
This library used an undocumented (at the time) glibc function called backtrace(3) which would return memory locations but not function names. Today, browsing old source code, I reviewed the library and was glad to see that backtrace(3) is currently not only documented but it also offers the same features my library did, so I won’t be updating Libbtrace anymore.