claims of python unit test un-debugability considered somewhat exaggerated
Michael Meeks
michael.meeks at suse.com
Tue Apr 9 03:22:09 PDT 2013
Hi guys,
On Mon, 2013-04-08 at 11:32 -0600, Tom Tromey wrote:
> CCing David Malcolm.
>
> Michael> (gdb) py-bt
>
> I just wanted to mention here that Phil Muldoon is working on a "frame
> filter" patch series that is basically "pretty printing for stack
> frames". With this in place you'll no longer need a special command --
> with appropriate support from Python, you'll be able to see interpreted
> frames interleaved with the low-level C frames.
Oh - nice ! :-)
> This series is nearing final review now and should appear in gdb 7.7,
> later this year.
Excellent news indeed.
> I think we're planning to rewrite the existing "py-bt" code into frame
> filter form ourselves.
So - in which case this significantly reduces the problems of using
python for debugging; I assume that with py-bt - there are still issues
with interleaving two tools for printing parts of backtraces when we
call several times to and fro between C++ and python.
> Eventually we'd like to have more full support for "mixed" interpreter
> and C debugging. However this is a ways off.
For me, clearly seeing the python line numbers is the key rather than
the interpreter details - we treat python itself as working black-box -
and the script itself as the problem ;-)
So - re-examining my requirements:
> + debug-ability - when the test fails - and the best tests are
> written to fail regularly ;-) we need to be able -very-simply-
> to get a backtrace we can work with - without a ton of
> training, reading a dozen wiki pages, poking for obscure
> symbols, etc.
Michael - as/when a python unit test fails - can we make the magic
environment variables that are listed include some debugging
instructions that include the "py-bt" detail etc. so that everything
needed is in the failure message ? when we're in the automatic trace
collection mode (I forget what env. var that is) do we dump the python
pieces as well ? Also - can we distribute / include / install the magic
that makes 'py-bt' work - not sure it works for me (on openSUSE - at
least a facile start gdb, type py-bt fails in spades ;-)
> + that backtrace should not have big, opaque chunks that
> are either empty (cf. Java) or point to random / irrelevant
> pieces of C/C++ interpreter code - Python / StarBasic &
> others. It should allow interactive inspection of variables
> up and down the stack.
It seems that this is getting towards working on modern Linux systems.
Do we get variable inspection sorted out there as well ?
> + reliability and performance: new unit tests should be small,
> fast, non-duplicative (ie. re-using existing code &
> frameworks)
I guess re-using the existing C++ test code / bootstrapping framework
mostly avoids duplication here; and either way unit tests are (sadly)
one of the more duplicative pieces of code we have.
> + ideally - the unit tests should run -in-the-same-process-
> which significantly helps with the above performance,
> debugging, reliability and more.
And this is now fixed; so - David & Michael - thanks for working on
this - looks like a good solution with a brighter future :-)
Thanks,
Michael.
--
michael.meeks at suse.com <><, Pseudo Engineer, itinerant idiot
More information about the LibreOffice
mailing list