From: Simon Marchi <simon.marchi@ericsson.com>
To: <gdb-patches@sourceware.org>
Subject: Re: [RFC] [PATCH] Provide the ability to write the frame unwinder in Python
Date: Mon, 12 Jan 2015 21:00:00 -0000 [thread overview]
Message-ID: <54B435D3.7000409@ericsson.com> (raw)
In-Reply-To: <CAHQ51u7NUoQ8w9c5mc-Eiz05b1Nub6zqj_Ne7vfgWb5EP9_X8w@mail.gmail.com>
On 14-12-15 01:13 PM, Alexander Smundak wrote:
> Python frame filters provide the ability to display non-native frames in
> a mixed-language application (say, a backtrace of an application written
> in C and embedding Java Virtual Machine can be displayed as a mix of
> native frames and Java frames). However, GDB cannot always unwind
> non-native frames. The proposed patch adds the ability to write frame
> unwinders in Python.
>
> 2014-12-12 Sasha Smundak <asmundak@google.com>
>
> * Makefile.in (SUBDIR_PYTHON_OBJS): Add py-unwind.o.
> (SUBDIR_PYTHON_SRCS): Add py-unwind.c.
> (py-unwind.o): New recipe.
> * NEWS: mention Python frame unwinding.
> * data-directory/Makefile.in (PYTHON_FILE_LIST): Add sniffers.py.
> * doc/python.texi (Writing a Frame Unwinder in Python): Add
> section.
> * python/py-objfile.c (objfile_object): Add frame_sniffers field.
> (objfpy_dealloc): Decrement frame_sniffers reference count.
> (objfpy_initialize): Create frame_sniffers list.
> (objfpy_get_frame_sniffers): Implement Objfile.frame_sniffers
> getter.
> (objfpy_set_frame_sniffers): Implement Objfile.frame_sniffers
> setter.
> (objfile_getset): Add frame_sniffers attribute to Objfile.
> * python/py-progspace.c (pspace_object): Add frame_sniffers field.
> (pspy_dealloc): Decrement frame_sniffers reference count.
> (pspy_initialize): Create frame_sniffers list.
> (pspy_get_frame_sniffers): Implement gdb.Progspace.frame_sniffers
> getter.
> (pspy_set_frame_sniffers): Implement gdb.Progspace.frame_sniffers
> setter.
> (pspy_getset): Add frame_sniffers attribute to gdb.Progspace.
> * python/py-unwind.c: New file, implements Python frame sniffers
> interface.
> * python/python-internal.h (pspy_get_name_sniffers): New prototype.
> (objpy_get_frame_sniffers): New prototype.
> (gdbpy_initialize_unwind): New prototype.
> * python/python.c (gdbpy_apply_type_printers): Call
> gdbpy_initialize_unwind.
> * python/lib/gdb/__init__.py (packages): add frame_sniffers.
>
> 2014-12-12 Sasha Smundak <asmundak@google.com>
>
> * gdb.python/py-unwind.c: Test program for the py-unwind test.
> * gdb.python/py-unwind.exp: Python frame sniffers test.
> * gdb.python/py-unwind.py: Frame sniffer in Python tested by
> py-unwind test.
>
Hi Alexander,
I don't have much experience in this field, so I fail to see what problem it would
help to solve.
From what I understand, with CPython, each PyEval_EvalFrameEx frame maps to one
non-native (Python) frame. So it's easy to just filter out the others and tweak
the output with a frame filter. Are you talking about other languages/VM where it's
not as simple as this? Could you provide a more concrete example to illustrate the
usefulness of the feature?
Thanks!
Simon
next prev parent reply other threads:[~2015-01-12 21:00 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-15 18:14 Alexander Smundak
2014-12-22 19:24 ` Alexander Smundak
2014-12-29 18:02 ` Alexander Smundak
2015-01-05 17:53 ` Alexander Smundak
2015-01-12 20:03 ` Alexander Smundak
2015-01-22 3:31 ` Alexander Smundak
2015-01-29 1:36 ` Alexander Smundak
2015-01-12 21:00 ` Simon Marchi [this message]
2015-01-12 21:22 ` Doug Evans
2015-02-04 22:36 ` Doug Evans
2015-02-12 17:58 ` Alexander Smundak
2015-02-19 2:32 ` Alexander Smundak
2015-02-20 11:12 ` Phil Muldoon
2015-02-26 3:09 ` Alexander Smundak
2015-03-02 22:56 ` Alexander Smundak
2015-03-03 8:46 ` Andy Wingo
2015-03-04 2:36 ` Alexander Smundak
2015-03-04 7:49 ` Andy Wingo
2015-03-09 11:02 ` Phil Muldoon
2015-03-11 2:22 ` Alexander Smundak
2015-03-11 8:49 ` Andy Wingo
2015-03-11 17:34 ` Doug Evans
2015-03-11 18:48 ` Alexander Smundak
2015-03-16 11:29 ` Andy Wingo
2015-03-16 12:01 ` Andy Wingo
2015-03-16 17:25 ` Alexander Smundak
2015-03-17 8:57 ` Andy Wingo
2015-03-17 19:48 ` Alexander Smundak
2015-03-17 21:37 ` Alexander Smundak
2015-03-18 8:54 ` Andy Wingo
2015-03-18 22:57 ` Alexander Smundak
2015-03-23 19:58 ` Doug Evans
2015-03-24 9:06 ` Andy Wingo
2015-03-26 3:31 ` Alexander Smundak
2015-03-26 18:53 ` Eli Zaretskii
2015-03-27 22:29 ` Doug Evans
2015-03-28 1:10 ` Alexander Smundak
2015-03-30 17:45 ` Doug Evans
2015-03-30 19:49 ` Alexander Smundak
2015-03-31 22:36 ` Doug Evans
2015-04-01 0:09 ` Alexander Smundak
2015-04-01 0:28 ` Doug Evans
2015-03-18 23:25 ` Doug Evans
2015-03-19 0:36 ` Alexander Smundak
2015-03-19 8:12 ` Andy Wingo
2015-03-20 0:15 ` Doug Evans
2015-03-20 2:27 ` Alexander Smundak
2015-03-20 17:48 ` Doug Evans
2015-03-20 8:26 ` Andy Wingo
2015-03-20 18:32 ` Doug Evans
2015-03-17 22:21 ` Doug Evans
2015-03-18 8:57 ` Andy Wingo
2015-03-18 16:48 ` Doug Evans
2015-03-19 8:04 ` Andy Wingo
2015-03-09 9:42 ` Andy Wingo
2015-03-03 0:49 ` Alexander Smundak
2015-03-03 14:38 ` Andy Wingo
2015-03-04 2:52 ` Alexander Smundak
2015-02-20 9:42 ` Phil Muldoon
2015-02-20 9:59 ` Phil Muldoon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54B435D3.7000409@ericsson.com \
--to=simon.marchi@ericsson.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox