+static gboolean
+native_stack_with_gdb (pid_t crashed_pid, const char **argv, FILE *commands, char* commands_filename)
+{
+ gchar *gdb;
+
+ gdb = g_find_program_in_path ("gdb");
+ if (!gdb)
+ return FALSE;
+
+ argv [0] = gdb;
+ argv [1] = "-batch";
+ argv [2] = "-x";
+ argv [3] = commands_filename;
+ argv [4] = "-nx";
+
+ fprintf (commands, "attach %ld\n", (long) crashed_pid);
+ fprintf (commands, "info threads\n");
+ fprintf (commands, "thread apply all bt\n");
+
+ return TRUE;
+}
+
+
+static gboolean
+native_stack_with_lldb (pid_t crashed_pid, const char **argv, FILE *commands, char* commands_filename)
+{
+ gchar *lldb;
+
+ lldb = g_find_program_in_path ("lldb");
+ if (!lldb)
+ return FALSE;
+
+ argv [0] = lldb;
+ argv [1] = "--batch";
+ argv [2] = "--source";
+ argv [3] = commands_filename;
+ argv [4] = "--no-lldbinit";
+
+ fprintf (commands, "process attach --pid %ld\n", (long) crashed_pid);
+ fprintf (commands, "thread list\n");
+ fprintf (commands, "thread backtrace all\n");
+ fprintf (commands, "detach\n");
+ fprintf (commands, "quit\n");
+
+ return TRUE;
+}
+