- argv [1] = "-ex";
- sprintf (buf1, "attach %ld", (long) crashed_pid);
- argv [2] = buf1;
- argv [3] = "--ex";
- argv [4] = "info threads";
- argv [5] = "--ex";
- argv [6] = "thread apply all bt";
- argv [7] = "--batch";
- argv [8] = 0;
+ if (argv [0] == NULL)
+ return;
+
+ if (using_lldb) {
+ if (mkstemp (template) == -1)
+ return;
+
+ commands = fopen (template, "w");
+
+ fprintf (commands, "process attach --pid %ld\n", (long) crashed_pid);
+ fprintf (commands, "script lldb.debugger.HandleCommand (\"thread list\")\n");
+ fprintf (commands, "script lldb.debugger.HandleCommand (\"thread backtrace all\")\n");
+ fprintf (commands, "detach\n");
+ fprintf (commands, "quit\n");
+
+ fflush (commands);
+ fclose (commands);
+
+ argv [1] = "--source";
+ argv [2] = template;
+ argv [3] = 0;
+ } else {
+ argv [1] = "-ex";
+ sprintf (buf1, "attach %ld", (long) crashed_pid);
+ argv [2] = buf1;
+ argv [3] = "--ex";
+ argv [4] = "info threads";
+ argv [5] = "--ex";
+ argv [6] = "thread apply all bt";
+ argv [7] = "--batch";
+ argv [8] = 0;
+ }