"Tim Peters" <tim.one@home.com> writes: > Fwd'ing this Skip gem from c.l.py, primarily so I can find it again next > time I'm thrashing on a Unix box. gdb clearly needs to adopt Python as its > extension language. HP has patches to do this, actually. Works quite nicely. And trust me, i've tried to get them to do it more than once. As I pointed out to skip, if he can profile gdb and tell me where the slowness is, it's likely I can make it a ton faster. GDB could use major optimizations almost everywhere. And i've done quite a lot of them, they just haven't been reviewed/integrated yet. --Dan C++ support maintainer - GDB DWARF2 reader person - GDB Symbol table patch submitting weirdo - GDB etc > > but-then-what-doesn't-ly y'rs - tim > > -----Original Message----- > From: python-list-admin@python.org > [mailto:python-list-admin@python.org]On Behalf Of Skip Montanaro > Sent: Saturday, June 09, 2001 12:31 AM > To: python-list@python.org > Subject: printing Python stack info from gdb > > >>From time to time I've wanted to be able to print the Python stack from gdb. > Today I broke down and spent some time actually implementing something. > > set $__trimpath = 1 > define ppystack > set $__fr = 0 > select-frame $__fr > while !($pc > Py_Main && $pc < Py_GetArgcArgv) > if $pc > eval_code2 && $pc < set_exc_info > set $__fn = PyString_AsString(co->co_filename) > set $__n = PyString_AsString(co->co_name) > if $__n[0] == '?' > set $__n = "<module code>" > end > if $__trimpath > set $__f = strrchr($__fn, '/') > if $__f > set $__fn = $__f + 1 > end > end > printf "%s (%d): %s\n", $__fn, f->f_lineno, $__n > end > set $__fr = $__fr + 1 > select-frame $__fr > end > select-frame 0 > end > > Output looks like this (and dribbles out *quite slowly*): > > Text_Editor.py (147): apply_tag > Text_Editor.py (152): apply_tag_by_name > Script_GUI.py (302): push_help > Script_GUI.py (113): put_help > Script_GUI.py (119): focus_enter > Signal.py (34): handle_signal > Script_GUI.py (324): main > Script_GUI.py (338): <module code> > > If you don't want to trim the paths from the filenames, set $__trimpath to > 0. > > Warning: I've only tried this with a very recent CVS version of Python on a > PIII-based Linux system with an interpreter compiled using gcc. I rely on > the ordering of functions within the while loop to detect when to exit the > loop and when the frame I'm examining is an eval_code2 frame. I'm sure > there are plenty of people out there with more gdb experience than me. I > welcome any feedback on ways to improve this little bit of code. > > -- > Skip Montanaro (skip@pobox.com) > (847)971-7098 > > -- > http://mail.python.org/mailman/listinfo/python-list > > > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev -- "I saw a man with a wooden leg, and a real foot. "-Steven Wright
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4