Hui Zhu wrote: > Hi Michael, > > + do_cleanups (old_cleanups); > > This line will remove the record file that we just save. > > I change some code: > static void > record_save_cleanups (void *data) > { > bfd *obfd = data; > //char *pathname = xstrdup (bfd_get_filename (obfd)); > bfd_close (obfd); > //unlink (pathname); > //xfree (pathname); > } > > I think you want unlink the gdb_record when save get some error. It > maybe need "discard_cleanups" the old_cleanups and bfd_close (obfd); > > After change the code, everything is OK. Yes. Thanks. Like this: + if (record_list->prev) + record_list = record_list->prev; + } + + do_cleanups (set_cleanups); + bfd_close (obfd); + discard_cleanups (old_cleanups); + + /* Succeeded. */ New diff attached.