[ python-Bugs-1248119 ] pdb 'next' does not skip list comprehension

SourceForge.net noreply at sourceforge.net
Sun Jul 31 02:59:30 CEST 2005


Bugs item #1248119, was opened at 2005-07-30 14:12
Message generated for change (Comment added) made by isandler
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1248119&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.4
Status: Open
Resolution: None
Priority: 5
Submitted By: Joseph Heled (pepster)
Assigned to: Nobody/Anonymous (nobody)
Summary: pdb 'next' does not skip list comprehension

Initial Comment:
pdb next command forces you to step over each list element.

This seem to be a reincarnation of this old bug.
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=523995&group_id=5470

Version:
Python 2.4.1 (#2, Mar 30 2005, 21:51:10) 
[GCC 3.3.5 (Debian 1:3.3.5-8ubuntu2)] on linux2



----------------------------------------------------------------------

Comment By: Ilya Sandler (isandler)
Date: 2005-07-30 17:59

Message:
Logged In: YES 
user_id=971153


A bit more information. I looked into what happens in
ceval.c and apparently the current behaviour is intentional..

Looks like this piece of code:

	else if (frame->f_lasti <= *instr_prev) {
		/* jumping back in the same line forces a trace event */
		result = call_trace(func, obj, frame,
				    PyTrace_LINE, Py_None);
	}

in maybe_call_line_trace() is responsible for the extra
"line" events..
Seems like this piece of code was added to fix bug #765624.
in ceval.c:2.386

So, should this (1248119) bug be dealt with by skipping
extra line events in bdb?

Any thoughts? Or am I totally lost?


----------------------------------------------------------------------

Comment By: Ilya Sandler (isandler)
Date: 2005-07-30 17:33

Message:
Logged In: YES 
user_id=971153


I changed bdb.py to print the kind of event it receives as
well as as line numbers and here is a session which
illustrates the bug...

 bagira:~/python/dist/src/bug-next1248119> cat t
 #../python
 y=[1,2,3,4]
 x=[ i+1 for i in y]
 print x
 bagira:~/python/dist/src/bug-next1248119> ../python -m pdb t
 event: call; line 1, file <string>
 event: line; line 1, file <string>
 event: call; line 2, file t
 event: line; line 2, file t
 > /home/ilya/python/dist/src/bug-next1248119/t(2)?()
 -> y=[1,2,3,4]
 (Pdb) n
 event: line; line 3, file t
 > /home/ilya/python/dist/src/bug-next1248119/t(3)?()
 -> x=[ i+1 for i in y]
 (Pdb) n
 event: line; line 3, file t
 > /home/ilya/python/dist/src/bug-next1248119/t(3)?()
 -> x=[ i+1 for i in y]
 (Pdb) n
 event: line; line 3, file t
 > /home/ilya/python/dist/src/bug-next1248119/t(3)?()
 -> x=[ i+1 for i in y]
 (Pdb) 
 event: line; line 3, file t
 > /home/ilya/python/dist/src/bug-next1248119/t(3)?()
 -> x=[ i+1 for i in y]

So it appears that the interpreter generates "line" events
for every iteration of the loop..

Would this be a bug in the interpreter (and not in pdb/bdb)?




----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1248119&group_id=5470


More information about the Python-bugs-list mailing list