[Lldb-commits] [lldb] r195370 - Added the ability to launch the program that was specified on the command line and have it waiting for a NativeProcessProtocol to attach.

Greg Clayton gclayton at apple.com
Thu Nov 21 10:58:35 PST 2013


Author: gclayton
Date: Thu Nov 21 12:58:35 2013
New Revision: 195370

URL: http://llvm.org/viewvc/llvm-project?rev=195370&view=rev
Log:
Added the ability to launch the program that was specified on the command line and have it waiting for a NativeProcessProtocol to attach.


Modified:
    lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp

Modified: lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp?rev=195370&r1=195369&r2=195370&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp (original)
+++ lldb/trunk/tools/lldb-gdbserver/lldb-gdbserver.cpp Thu Nov 21 12:58:35 2013
@@ -93,7 +93,9 @@ main (int argc, char *argv[])
     Error error;
     int ch;
     Debugger::Initialize();
-    
+    ProcessLaunchInfo launch_info;
+    ProcessAttachInfo attach_info;
+
     bool show_usage = false;
     int option_error = 0;
 //    StreamSP stream_sp (new StreamFile(stdout, false));
@@ -183,7 +185,23 @@ main (int argc, char *argv[])
     // Any arguments left over are for the the program that we need to launch. If there
     // are no arguments, then the GDB server will start up and wait for an 'A' packet
     // to launch a program, or a vAttach packet to attach to an existing process.
-
+    if (argc > 0)
+    {
+        // Launch the program specified on the command line
+        launch_info.SetArguments((const char **)argv, true);
+        launch_info.GetFlags().Set(eLaunchFlagDebug | eLaunchFlagStopAtEntry);
+        error = Host::LaunchProcess (launch_info);
+        
+        if (error.Success())
+        {
+            printf ("Launched '%s' as process %" PRIu64 "...\n", argv[0], launch_info.GetProcessID());
+        }
+        else
+        {
+            fprintf (stderr, "error: failed to launch '%s': %s\n", argv[0], error.AsCString());
+        }
+    }
+    
     const bool is_platform = false;
     GDBRemoteCommunicationServer gdb_server (is_platform);
     





More information about the lldb-commits mailing list