Hi LLDB devs,

I’m trying to build a debugger integration that uses LLDB C++ API. Due to lack of documentation, I’m basically using the examples in the python API as a guidance.

I had following code, which basically contains one line creating a SBDebugger, but it generates a SIGSEGV fault…

#include <LLDB.h>
using namespace lldb;

int main()
SBDebugger debugger = SBDebugger::Create();

Did I do something wrong?

Kind regards,

Hi Rui, you need to call SBDebugger::Terminate() before your program exits.

You will want to call SBDebugger::Initialize() first before doing anything. Since LLDB is a shared library, we don't want to do a bunch of work when the LLDB shared library is loaded in case LLDB might not always be used right away or at all within a process. So your code can be:

int main() {
  SBDebugger debugger = SBDebugger::Create();

SBDebugger::Initialize() will case all internal interfaces to be initialized and ready for a debug session. Terminate will tear everything down as well. Again, this allows LLDB to be used in processes and ensure minimal impact from just linking against the library. It is ok to call SBDebugger::Initialize() more than once, as the initialize will only happen once.