void trace_save_tfile (const char *filename, int target_does_save) { struct trace_file_writer *writer; struct cleanup *back_to; writer = tfile_trace_file_writer_new (); back_to = make_cleanup (trace_file_writer_xfree, writer); trace_save (filename, writer, target_does_save); do_cleanups (back_to); }
static void trace_save_command (char *args, int from_tty) { int target_does_save = 0; char **argv; char *filename = NULL; struct cleanup *back_to; int generate_ctf = 0; struct trace_file_writer *writer = NULL; if (args == NULL) error_no_arg (_("file in which to save trace data")); argv = gdb_buildargv (args); back_to = make_cleanup_freeargv (argv); for (; *argv; ++argv) { if (strcmp (*argv, "-r") == 0) target_does_save = 1; if (strcmp (*argv, "-ctf") == 0) generate_ctf = 1; else if (**argv == '-') error (_("unknown option `%s'"), *argv); else filename = *argv; } if (!filename) error_no_arg (_("file in which to save trace data")); if (generate_ctf) writer = ctf_trace_file_writer_new (); else writer = tfile_trace_file_writer_new (); make_cleanup (trace_file_writer_xfree, writer); trace_save (filename, writer, target_does_save); if (from_tty) printf_filtered (_("Trace data saved to %s '%s'.\n"), generate_ctf ? "directory" : "file", filename); do_cleanups (back_to); }