Access to siginfo for the signal from debugger
David Xu
davidxu at freebsd.org
Fri Jul 2 02:13:59 UTC 2010
Kostik Belousov wrote:
> On Thu, Jul 01, 2010 at 05:05:26PM -0400, John Baldwin wrote:
>> On Thursday 01 July 2010 09:42:17 am Kostik Belousov wrote:
>>> Hi,
>>> below is the patch that provides the debugger with access to siginfo
>>> of the signal that stopped the debuggee. This allows to see a lot more
>>> details for the cause of the process stop. E.g. you can see a fault
>>> address if process get SIGSEGV or SIGBUS, you can distinguish between
>>> breakpoint-generated SIGTRAP and non-breakpoint, whether the signal
>>> was send due to external event etc.
>>>
>>> The change to struct ptrace_lwpinfo is backward-compatible in the sense
>>> that programs that were compiled with old definition for the struct will
>>> work on new kernels.
>> Nice! Does gdb "just work" with these changes or does it need patching as
>> well?
> It should "just work", and my testing seems to confirm this. gdb uses
> PT_LWPINFO to enumerate the thread ids, and I checked it on mt process.
>
> As I said, the change is ABI backward-compatible, i.e. you do not need
> even to recompile the old program for new kernel.
>
> Sure, gdb cannot show additional available information without
> modifications.
Yes, you can add new fields to ptrace_lwpinfo without any problem.
To print new fields, you should change the function
fbsd_thread_signal_cmd in file
src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c
after change, you just type 'thread signal' command in gdb to
show thread's signal info. The command is freebsd specific,
others may or may not have it.
Regards,
David Xu
More information about the freebsd-arch
mailing list