Add ability to launch application from command line arguments (after --)
authorIgor Kulaychuk <i.kulaychuk@samsung.com>
Mon, 16 Apr 2018 15:03:22 +0000 (18:03 +0300)
committerIgor Kulaychuk <i.kulaychuk@samsung.com>
Fri, 27 Apr 2018 17:49:15 +0000 (20:49 +0300)
src/debug/netcoredbg/main.cpp

index 8bd8135..c8b9768 100644 (file)
@@ -47,6 +47,9 @@ int main(int argc, char *argv[])
 
     uint16_t serverPort = 0;
 
+    std::string execFile;
+    std::vector<std::string> execArgs;
+
     for (int i = 1; i < argc; i++)
     {
         if (strcmp(argv[i], "--attach") == 0)
@@ -107,6 +110,24 @@ int main(int argc, char *argv[])
             }
             continue;
         }
+        else if (strcmp(argv[i], "--") == 0)
+        {
+            ++i;
+            if (i < argc)
+            {
+                execFile = argv[i];
+            }
+            else
+            {
+                fprintf(stderr, "Error: Missing program argument\n");
+                return EXIT_FAILURE;
+            }
+            for (++i; i < argc; ++i)
+            {
+                execArgs.push_back(argv[i]);
+            }
+            break;
+        }
         else
         {
             fprintf(stderr, "Error: Unknown option %s\n", argv[i]);
@@ -153,6 +174,17 @@ int main(int argc, char *argv[])
             return EXIT_FAILURE;
         }
     }
+    else if (!execFile.empty())
+    {
+        debugger.Initialize();
+        debugger.Launch(execFile, execArgs, true);
+        HRESULT Status = debugger.ConfigurationDone();
+        if (FAILED(Status))
+        {
+            fprintf(stderr, "Error: 0x%x Failed to launch %s\n", Status, execFile.c_str());
+            return EXIT_FAILURE;
+        }
+    }
 
     protocol->CommandLoop();