The only good thing about GDB is that it can execute almost arbitrary C code in the frames. Otherwise it suffers from the same problems as GCC in that people decided that being able to embed GDB had to be as complicated as possible and it shows.
GDB only presents the GDB-MI (machine interface) textual interface as an "API". LLDB actually ships a library that you can link against. When it comes to integration, LLDB is miles ahead of GDB.
Well, it wasn't deliberate.
GDB is just so old that embedded it was never a serious concern when it was built.
At some point, it was decided the sanest way to make it "embeddedable" would be the GDB/MI interface, rather than a library.