Fix missing calls to UnregisterPlugin and add an assert in the PluginManager that ensures all plugins have been unregistered by the time the plugin manager is destroyed.
53 lines
1.1 KiB
Plaintext
53 lines
1.1 KiB
Plaintext
|
|
/// LLDB C API Test Driver
|
|
|
|
#include <algorithm>
|
|
#include <iostream>
|
|
#include <iterator>
|
|
#include <string>
|
|
#include <vector>
|
|
#if !defined(_MSC_VER)
|
|
#include <signal.h>
|
|
#endif
|
|
|
|
%include_SB_APIs%
|
|
|
|
#include "common.h"
|
|
|
|
using namespace std;
|
|
using namespace lldb;
|
|
|
|
void test(SBDebugger &dbg, std::vector<string> args);
|
|
|
|
int main(int argc, char** argv) {
|
|
|
|
// Ignore SIGPIPE. The lldb driver does this as well,
|
|
// because we seem to get spurious SIGPIPES on some
|
|
// Unixen that take the driver down.
|
|
#if !defined(_MSC_VER)
|
|
signal(SIGPIPE, SIG_IGN);
|
|
#endif
|
|
int code = 0;
|
|
|
|
SBDebugger::Initialize();
|
|
SBDebugger dbg = SBDebugger::Create();
|
|
dbg.HandleCommand("settings set symbols.enable-external-lookup false");
|
|
dbg.HandleCommand(
|
|
"settings set plugin.process.gdb-remote.packet-timeout 60");
|
|
|
|
try {
|
|
if (!dbg.IsValid())
|
|
throw Exception("invalid debugger");
|
|
vector<string> args(argv + 1, argv + argc);
|
|
|
|
test(dbg, args);
|
|
} catch (Exception &e) {
|
|
cout << "ERROR: " << e.what() << endl;
|
|
code = 1;
|
|
}
|
|
|
|
SBDebugger::Destroy(dbg);
|
|
SBDebugger::Terminate();
|
|
return code;
|
|
}
|