Bugs item #1248119, was opened at 2005-07-31 09:12 Message generated for change (Comment added) made by pepster 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: Joseph Heled (pepster) Date: 2005-07-31 18:02 Message: Logged In: YES user_id=86677 You probably never use pdb in a real program, otherwise you would realize what a serious bummer this is. Giving a 'next N' is nice, but will not be a real solution. Somethims it is not easy to know how many iterations there are. And when they are nested etc. If you are convinced this is the desired and reasonable behaviour for next (a point of view I don't share), at least have a different command to skip to the next line. I am sorry but I have no idea if this is easy or hard. Thanks, Joseph ---------------------------------------------------------------------- Comment By: Ilya Sandler (isandler) Date: 2005-07-31 15:20 Message: Logged In: YES user_id=971153 While this behaviour indeed feels like a bug I'm starting to think that it is not.. Observation1: 'step' should stop at every iteration of a list comprehension Observation2: the only difference between 'step' and 'next' is that 'step' steps into function calls (which is not the case here) So, it seems like 'next' should also stop at every iteration of a list comprehenstion. Ie current behaviour is not a bug... Would supporting a numeric argument for the 'next' command make sense? So that 'next 1' would mean "stop when actual line number increases by at least 1"... ---------------------------------------------------------------------- Comment By: Ilya Sandler (isandler) Date: 2005-07-31 12: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-31 12: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 _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com