Get the inferior binary's name via the command line argument instead
authorJason Molenda <jmolenda@apple.com>
Thu, 10 Jul 2014 10:23:01 +0000 (10:23 +0000)
committerJason Molenda <jmolenda@apple.com>
Thu, 10 Jul 2014 10:23:01 +0000 (10:23 +0000)
of hardcoding it.

llvm-svn: 212698

lldb/test/api/multiple-debuggers/multi-process-driver.cpp

index 87b3fff..dac9a7e 100644 (file)
@@ -1,3 +1,18 @@
+
+// This program creates NUMBER_OF_SIMULTANEOUS_DEBUG_SESSIONS of pthreads, 
+// creates an lldb Debugger on each thread, creates targets, inserts two
+// breakpoints, runs to the first breakpoint, backtraces, runs to the second
+// breakpoint, backtraces, kills the inferior process, closes down the
+// debugger.
+
+// The main thread keeps track of which pthreads have completed and which 
+// pthreads have completed successfully, and exits when all pthreads have
+// completed successfully, or our time limit has been exceeded.
+
+// This test file helps to uncover race conditions and locking mistakes
+// that are hit when lldb is being used to debug multiple processes
+// simultaneously.
+
 #include <stdio.h>
 #include <stdlib.h>
 
@@ -23,6 +38,8 @@ using namespace lldb;
 bool *completed_threads_array = 0;
 bool *successful_threads_array  = 0;
 
+const char *inferior_process_name = "testprog";
+
 bool
 wait_for_stop_event (SBProcess process, SBListener listener)
 {
@@ -88,7 +105,7 @@ void *do_one_debugger (void *in)
     if (debugger.IsValid ())
     {
         debugger.SetAsync (true);
-        SBTarget target = debugger.CreateTargetWithFileAndArch("testprog", "x86_64");
+        SBTarget target = debugger.CreateTargetWithFileAndArch(inferior_process_name, "x86_64");
         SBCommandInterpreter command_interp = debugger.GetCommandInterpreter();
         if (target.IsValid())
         {
@@ -202,7 +219,7 @@ void *do_one_debugger (void *in)
     return (void*) 1;
 }
 
-int main ()
+int main (int argc, char **argv)
 {
     SBDebugger::Initialize();
 
@@ -211,6 +228,11 @@ int main ()
     successful_threads_array = (bool *) malloc (sizeof (bool) * NUMBER_OF_SIMULTANEOUS_DEBUG_SESSIONS);
     memset (successful_threads_array, 0, sizeof (bool) * NUMBER_OF_SIMULTANEOUS_DEBUG_SESSIONS);
 
+    if (argc > 1 && argv[1] != NULL)
+    {
+        inferior_process_name = argv[1];
+    }
+
     for (uint64_t i = 0; i< NUMBER_OF_SIMULTANEOUS_DEBUG_SESSIONS; i++)
     {
         pthread_t thread;