llvm-project

Форк
0
82 строки · 2.4 Кб
1
//===-- lldb-server.cpp -----------------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8

9
#include "SystemInitializerLLGS.h"
10
#include "lldb/Host/Config.h"
11
#include "lldb/Initialization/SystemLifetimeManager.h"
12
#include "lldb/Version/Version.h"
13

14
#include "llvm/ADT/STLExtras.h"
15
#include "llvm/ADT/StringRef.h"
16
#include "llvm/Support/InitLLVM.h"
17
#include "llvm/Support/ManagedStatic.h"
18
#include "llvm/Support/PrettyStackTrace.h"
19
#include "llvm/Support/Signals.h"
20

21
#include <cstdio>
22
#include <cstdlib>
23

24
static llvm::ManagedStatic<lldb_private::SystemLifetimeManager>
25
    g_debugger_lifetime;
26

27
static void display_usage(const char *progname) {
28
  fprintf(stderr, "Usage:\n"
29
                  "  %s v[ersion]\n"
30
                  "  %s g[dbserver] [options]\n"
31
                  "  %s p[latform] [options]\n"
32
                  "Invoke subcommand for additional help\n",
33
          progname, progname, progname);
34
  exit(0);
35
}
36

37
// Forward declarations of subcommand main methods.
38
int main_gdbserver(int argc, char *argv[]);
39
int main_platform(int argc, char *argv[]);
40

41
namespace llgs {
42
static void initialize() {
43
  if (auto e = g_debugger_lifetime->Initialize(
44
          std::make_unique<SystemInitializerLLGS>(), nullptr))
45
    llvm::consumeError(std::move(e));
46
}
47

48
static void terminate_debugger() { g_debugger_lifetime->Terminate(); }
49
} // namespace llgs
50

51
// main
52
int main(int argc, char *argv[]) {
53
  llvm::InitLLVM IL(argc, argv, /*InstallPipeSignalExitHandler=*/false);
54
  llvm::setBugReportMsg("PLEASE submit a bug report to " LLDB_BUG_REPORT_URL
55
                        " and include the crash backtrace.\n");
56

57
  int option_error = 0;
58
  const char *progname = argv[0];
59
  if (argc < 2) {
60
    display_usage(progname);
61
    exit(option_error);
62
  }
63

64
  switch (argv[1][0]) {
65
  case 'g':
66
    llgs::initialize();
67
    main_gdbserver(argc, argv);
68
    llgs::terminate_debugger();
69
    break;
70
  case 'p':
71
    llgs::initialize();
72
    main_platform(argc, argv);
73
    llgs::terminate_debugger();
74
    break;
75
  case 'v':
76
    fprintf(stderr, "%s\n", lldb_private::GetVersion());
77
    break;
78
  default:
79
    display_usage(progname);
80
    exit(option_error);
81
  }
82
}
83

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.