diff options
author | Tamas Berghammer <tberghammer@google.com> | 2015-05-27 13:34:04 +0000 |
---|---|---|
committer | Tamas Berghammer <tberghammer@google.com> | 2015-05-27 13:34:04 +0000 |
commit | 9c9ecce0770b3cc9f2237a28a7080553ec61bcb1 (patch) | |
tree | ea321d2e850b220ef2e51c5b520a30dd1ca2433b /lldb/tools/lldb-server/lldb-platform.cpp | |
parent | f5c4dec750e424b217f794e250c48bdfc4100f1e (diff) | |
download | bcm5719-llvm-9c9ecce0770b3cc9f2237a28a7080553ec61bcb1.tar.gz bcm5719-llvm-9c9ecce0770b3cc9f2237a28a7080553ec61bcb1.zip |
Make log options uniform betwwen lldb-platform and lldb-gdbserver
This change also get rid of an unused Debugger instance in
GDBRemoteCommunicationServerLLGS and the command interpreter from
lldb-platform what was used only for enabling logging.
Differential revision: http://reviews.llvm.org/D9876
llvm-svn: 238319
Diffstat (limited to 'lldb/tools/lldb-server/lldb-platform.cpp')
-rw-r--r-- | lldb/tools/lldb-server/lldb-platform.cpp | 54 |
1 files changed, 22 insertions, 32 deletions
diff --git a/lldb/tools/lldb-server/lldb-platform.cpp b/lldb/tools/lldb-server/lldb-platform.cpp index 6f5dfbcbbb7..46b86b88b70 100644 --- a/lldb/tools/lldb-server/lldb-platform.cpp +++ b/lldb/tools/lldb-server/lldb-platform.cpp @@ -25,21 +25,19 @@ // Other libraries and framework includes #include "lldb/Core/Error.h" -#include "lldb/Core/ConnectionMachPort.h" -#include "lldb/Core/Debugger.h" -#include "lldb/Core/StreamFile.h" #include "lldb/Host/ConnectionFileDescriptor.h" #include "lldb/Host/HostGetOpt.h" #include "lldb/Host/OptionParser.h" #include "lldb/Host/Socket.h" -#include "lldb/Interpreter/CommandInterpreter.h" -#include "lldb/Interpreter/CommandReturnObject.h" +#include "LLDBServerUtilities.h" #include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServerPlatform.h" #include "Plugins/Process/gdb-remote/ProcessGDBRemoteLog.h" using namespace lldb; using namespace lldb_private; +using namespace lldb_private::lldb_server; using namespace lldb_private::process_gdb_remote; +using namespace llvm; //---------------------------------------------------------------------- // option descriptors for getopt_long_only() @@ -53,12 +51,13 @@ static struct option g_long_options[] = { { "debug", no_argument, &g_debug, 1 }, { "verbose", no_argument, &g_verbose, 1 }, + { "log-file", required_argument, NULL, 'l' }, + { "log-channels", required_argument, NULL, 'c' }, { "listen", required_argument, NULL, 'L' }, { "port-offset", required_argument, NULL, 'p' }, { "gdbserver-port", required_argument, NULL, 'P' }, { "min-gdbserver-port", required_argument, NULL, 'm' }, { "max-gdbserver-port", required_argument, NULL, 'M' }, - { "lldb-command", required_argument, NULL, 'c' }, { "server", no_argument, &g_server, 1 }, { NULL, 0, NULL, 0 } }; @@ -71,7 +70,6 @@ static struct option g_long_options[] = #define HIGH_PORT (49151u) #endif - //---------------------------------------------------------------------- // Watch for signals //---------------------------------------------------------------------- @@ -93,8 +91,7 @@ signal_handler(int signo) static void display_usage (const char *progname, const char *subcommand) { - fprintf(stderr, "Usage:\n %s %s [--server] --listen port\n", - progname, subcommand); + fprintf(stderr, "Usage:\n %s %s [--log-file log-file-name] [--log-channels log-channel-list] --server --listen port\n", progname, subcommand); exit(0); } @@ -115,18 +112,14 @@ main_platform (int argc, char *argv[]) std::string listen_host_port; int ch; - lldb::DebuggerSP debugger_sp = Debugger::CreateInstance (); - - debugger_sp->SetInputFileHandle(stdin, false); - debugger_sp->SetOutputFileHandle(stdout, false); - debugger_sp->SetErrorFileHandle(stderr, false); - + std::string log_file; + StringRef log_channels; // e.g. "lldb process threads:gdb-remote default:linux all" + GDBRemoteCommunicationServerPlatform::PortMap gdbserver_portmap; int min_gdbserver_port = 0; int max_gdbserver_port = 0; uint16_t port_offset = 0; - std::vector<std::string> lldb_commands; bool show_usage = false; int option_error = 0; int socket_error = -1; @@ -151,6 +144,16 @@ main_platform (int argc, char *argv[]) listen_host_port.append (optarg); break; + case 'l': // Set Log File + if (optarg && optarg[0]) + log_file.assign(optarg); + break; + + case 'c': // Log Channels + if (optarg && optarg[0]) + log_channels = StringRef(optarg); + break; + case 'p': { char *end = NULL; @@ -205,10 +208,6 @@ main_platform (int argc, char *argv[]) } } break; - - case 'c': - lldb_commands.push_back(optarg); - break; case 'h': /* fall-through is intentional */ case '?': @@ -217,6 +216,9 @@ main_platform (int argc, char *argv[]) } } + if (!LLDBServerUtilities::SetupLogging(log_file, log_channels, 0)) + return -1; + // Make a port map for a port range that was specified. if (min_gdbserver_port < max_gdbserver_port) { @@ -227,7 +229,6 @@ main_platform (int argc, char *argv[]) { fprintf (stderr, "error: --min-gdbserver-port (%u) is greater than --max-gdbserver-port (%u)\n", min_gdbserver_port, max_gdbserver_port); option_error = 3; - } // Print usage and exit if no listening port is specified. @@ -240,17 +241,6 @@ main_platform (int argc, char *argv[]) exit(option_error); } - // Execute any LLDB commands that we were asked to evaluate. - for (const auto &lldb_command : lldb_commands) - { - lldb_private::CommandReturnObject result; - printf("(lldb) %s\n", lldb_command.c_str()); - debugger_sp->GetCommandInterpreter().HandleCommand(lldb_command.c_str(), eLazyBoolNo, result); - const char *output = result.GetOutputData(); - if (output && output[0]) - puts(output); - } - std::unique_ptr<Socket> listening_socket_up; Socket *socket = nullptr; const bool children_inherit_listen_socket = false; |