Re: [RFA] print error message if (auto) disassembly failed

Joel Brobecker
2009-04-16T23:57:48Z

[-- Attachment #1: Type: text/plain, Size: 826 bytes --]

> OK, but your suggested message text is too long, I think. Something
> shorter, like "(address unreadable)" is better, IMO.

Frankly, I think this is overkill - even with the 64bit addresses
the line was still less than 70 characters long. But I'm not going
to argue. Here you go:

(gdb) core core
warning: core file may not match specified executable file.
Core was generated by `./crash'.
Program terminated with signal 6, Aborted.
#0 0x00007fe6fe543307 in ?? ()
0x00007fe6fe543307: (cannot read memory)

2009-04-17 Joel Brobecker <brobecker@adacore.com>

* stack.c (do_gdb_disassembly): Print an error message if an error
was thrown while trying to perform the disassembly.

I'm currently testing this patch on x86_64-linux, but I don't really
expect any problem.

--
Joel

[-- Attachment #2: stack.diff --]
[-- Type: text/x-diff, Size: 1128 bytes --]

commit de33df66fc64edf55aa81a7d08adccf911aa4fdf
Author: Joel Brobecker <brobecker@adacore.com>
Date: Tue Apr 14 15:23:25 2009 -0700

* stack.c (do_gdb_disassembly): Print an error message if an error
was thrown while trying to perform the disassembly.

diff --git a/gdb/stack.c b/gdb/stack.c
index dfe3900..bbeff2c 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -507,6 +507,21 @@ do_gdb_disassembly (int how_many, CORE_ADDR low, CORE_ADDR high)
{
gdb_disassembly_stub (&args);
}
+ /* If an exception was thrown while doing the disassembly, print
+ the error message, to give the user a clue of what happened. */
+ if (exception.reason == RETURN_ERROR)
+ {
+ if (exception.error == MEMORY_ERROR)
+ {
+ /* For memory errors, prefer a short error message over
+ the error message provided in the exception. */
+ gdb_flush (gdb_stdout);
+ gdb_flush (gdb_stderr);
+ fprintf_filtered (gdb_stderr, _("(cannot read memory)\n"));
+ }
+ else
+ exception_print (gdb_stderr, exception);
+ }
}

/* Print information about frame FRAME. The output is format according