Commit Graph

40 Commits

Author SHA1 Message Date
Guido van Rossum 19878f58fe Sjoerd Mullender writes:
I regularly find that pdb sets the breakpoint on the wrong line when I
try to set a breakpoint on a function.  This fixes the problem
somewhat.
The real problem is that pdb tries to parse the Python source code to
find the first executable line.  A better way might be to inspect the
code object, or even have a variable in the code object
co_firstexecutablelineno, but that's too much work.

The patch fixes the problem when the first code line after the def
statement contains the start *and* end of a triple-quoted string.  The
code assumed that the end of a triple-quoted string is not on the same
line as the start, and so it would skip to the end of the *next*
triple-quoted string.
1999-11-03 13:10:07 +00:00
Barry Warsaw 2bee8feac6 Pdb.lineinfo(): Don't use os.popen('egrep ...') to find the line in
the file that a function is defined on.  Non-portable to Windows and
JPython.  Instead, new find_function() uses re module on a similar
(simple-minded) pattern.
1999-09-09 16:32:41 +00:00
Guido van Rossum 699f3bbba3 Get rid of confusing 'global' statement in global code.
(Andrew Dalke & kjpylint)
1999-05-03 18:12:08 +00:00
Guido van Rossum b657c9344f Improvement of b/w compat note in help text for clear, by Richard Wolff. 1999-01-28 14:38:32 +00:00
Guido van Rossum 583cc31c22 Get rid of do_clear_break / do_clb command -- it is redundant.
(It was left in accidentally after a long and arduous 3-way patch session.)
1999-01-27 22:43:55 +00:00
Guido van Rossum 816a9fbd2c Change clear syntax to support three alternatives:
clear
    clear file:line
    clear bpno bpno ...

Also print the breakpoint data after calling set_break(), because the
print statement in set_break() has gone.
1999-01-25 20:56:07 +00:00
Guido van Rossum c2047c19f5 When run as a script, don't pass a fake __main__ dictionary; use the
real one.
1998-10-15 01:38:23 +00:00
Guido van Rossum 3a98e78a6e Richard Wolff's additional changes; some layout nits, and change the
alias delimiter to ';;'.
1998-09-17 15:00:30 +00:00
Guido van Rossum 2424f855f3 Richard Wolff's changes:
pdb.py  Uses the Breakpoint class so one can enable/disable breakpoints,
	set temporary ones, set ignore counts, and conditions.  The last
	can be set using the 'b' command
		b 243 , i>4		( b 243,i>4 if you are space adverse)
	or with the condition command so conditions can be changed
	for a particular breakpoint.

	Breakpoints are numbered from 1 on, and if a breakpoint is deleted,
	the number is not reused.  All the breakpoint handling commands
	refer to breakpoints by number.  To be consistent, the clear command
	does so as well, which is the one change from the original pdb that
	is not transparent.  Thus only the breakpoint command 'b' uses a
	line number or file:line or method.  You can also give
		b whrandom.random    and the method will be searched for along
	sys.path.  This is implemented with an 'egrep' command and so
	is not as portable as it might be.  [ see  lineinfo() and
	lineinfoCmd ]

	Breakpoints cannot be set at a line that is blank or a '#' comment
	or starts a triply quoted comment.  This is because I would like
	this behavior in my DDD interface and think it reasonable for
	pdb as well.  It can be removed readily, however as it is all
	incorporated in the routine checkline().  If one attempts to
	set a breakpoint at a 'def' line, the breakpoint is automatically
	moved to the first executable line after the 'def'.  This too is
	in checkline().

	do_EOF() returns zero so typing an end-of-file character as a command
	does nothing.  'quit' does the quitting.

	The routine defaultFile() is present so as to preserve the current
	pdb behavior and yet allow me to override it in pydb.

	There's some code in lineinfo() that is probably mainly useful only
	for pydb and if you prefer, much up to the comment "Best first guess"
	could be removed.

	Keith Davidson provided the code for handling $HOME/.pdbrc and
	./.pdbrc, and it has been incorporated.  He also provided the
	alias handling routine.  I modified it a bit so it could live
	nicely in precmd().  He and I have been in contact; he has the
	new pdb (and pydb) with his code incorporated.  He also asked
	about the possibility of allowing multiple commands on one
	line, such as step;step  or s;s  or with an alias such as
		alias ct tbreak %1 ; continue
	and since it was so easy, that's in place as well.  It's a simple
	'split the line at the first ";"' operation and puts the second
	half in the command queue (self.cmdqueue).  This has the unfortunate
	effect of destroying a line like   print "i: "+i+"; j: "+j
	but either there's a simple way to deal with this, or my attitude
	will remain that pdb is a debugger, not a compiler/parser/etc.
	An alias like   alias 4s  s;;s;
	will work because the adjacent and trailing ";" act like a <cr> which
	repeats the last command.  Of course, either s;s;s;s or s;;;  would be
	a bit more sensible.

	The help commands have been updated.
1998-09-11 22:50:09 +00:00
Guido van Rossum 1f00eed8b5 Feature added by Harri Pasanen (at my suggestion): .py suffix on
filename may be omitted.
1998-07-22 13:35:21 +00:00
Guido van Rossum b5699c7240 Added support for specifying a filename for a breakpoint, roughly
according to an idea by Harri Pasanen (but with different syntax).
This affects the 'break' and 'clear' commands and their help
functions.  Also added a helper method lookupmodule().

Also:

- Try to import readline (important when pdb is used from/as a script).
- Get rid of reference to ancient __privileged__ magic variable.
- Moved all import out of functions to the top.
- When used as a script, check that the script file exists.
1998-07-20 23:13:54 +00:00
Guido van Rossum 46c86bbca9 A working version of the 'args' command (it prints the current values
of the variables known to hold arguments, but that's as close as I can
get, and generally it's close enough).
1998-02-25 20:50:32 +00:00
Guido van Rossum f15d15964b Use sys.exc_info() where needed. 1997-09-29 23:22:12 +00:00
Guido van Rossum c444865994 No longer need to use codehack -- use co.co_firstlineno instead. 1997-07-18 16:47:40 +00:00
Guido van Rossum 9e1ee9715e Support for conditional breakpoints (Jim Fulton, with some changes). 1997-07-11 13:43:53 +00:00
Guido van Rossum f06ee5fa07 /usr/local/bin/python -> /usr/bin/env python 1996-11-27 19:52:01 +00:00
Guido van Rossum ec577d53a9 Correct sys.path[0] when used stand-alone 1996-09-10 17:39:34 +00:00
Guido van Rossum f17361d314 Two changes suggested by Andrew Kuchling:
- move compile() inside try-except
- add code so you can do "python pdb.py <script> <arg> ..." to debug <script>
1996-07-30 16:28:13 +00:00
Guido van Rossum ec8fd94aab use new "single" compile option 1995-08-07 20:16:05 +00:00
Guido van Rossum 5e38b6fda1 handle class exceptions; added runeval; made runctx obsolete 1995-02-27 13:13:40 +00:00
Guido van Rossum b6aa92ebf1 fix formatting of stack entries 1995-02-03 12:50:04 +00:00
Guido van Rossum a558e37eb4 improved prompt format 1994-11-10 22:27:35 +00:00
Guido van Rossum b6775db241 Merge alpha100 branch back to main trunk 1994-08-01 11:34:53 +00:00
Guido van Rossum 7bc817d5ba * Mass change: get rid of all init() methods, in favor of __init__()
constructors.  There is no backward compatibility.  Not everything has
  been tested.
* aiff.{py,doc}: deleted in favor of aifc.py (which contains its docs as
  comments)
1993-12-17 15:25:27 +00:00
Guido van Rossum b37954f917 Added missing "import os" to pdb.help() 1993-10-22 13:57:38 +00:00
Guido van Rossum e61fa0a1e4 * profile.py, pdb.py: added help() function
* builtin.py: b/w compat for builtin -> __builtin__ name change
* string.py: added atof() and atol() and corresponding exceptions
* test_types.py: added test for list sort with  user comparison function
1993-10-22 13:56:35 +00:00
Guido van Rossum 8e2ec56cbc * pdb.py: set 'privileged' property when evaluating expressions
* string.py: change whitespace to include \r, \v and \f.
  When importing strop succeeds, re-evaluate meaning of letters.
1993-07-29 09:37:38 +00:00
Guido van Rossum 5ef74b8f8e pdb.py, bdb.py, cmd.py: use __init__() instead of init() 1993-06-23 11:55:24 +00:00
Guido van Rossum 0023078a0b Added whatis command (third try -- filesystem was full, rcs lock failed) 1993-03-29 11:39:45 +00:00
Guido van Rossum 89a78697b8 * Got entirely rid of path.py.
* Many modules: fixes for new, stricter, argument passing rules
  (most changes were automatic ones -- not all of this is tested!).
* gwin.py: now uses mainloop.py for its main loop and window admin.
* mainloop.py: always call dispatch() with event as a tuple!
* Fix bug in pdb's 'clear' command -- don't set the bpt but clear it!
1992-12-14 12:57:56 +00:00
Guido van Rossum c629d34c4f * change default line numbers for 'list' in pdb.py
* changed eval() into getattr() in cmd.py
* added dirname(), basename() and (dummy) normath() to macpath.py
* renamed nntp.py to nntplib.py
* Made string.index() compatible with strop.index()
* Make string.atoi('') raise string.atoi_error rather than ValueError
* Added dirname() and normpath() to posixpath.
1992-11-05 10:43:02 +00:00
Guido van Rossum 3577113d83 Added post_mortem() and pm() interfaces to pdb and wdb.
Added colorsys.py (color system conversions).
SV.py: new version for new svideo.h (Sjoerd).
DEVICE.py: added VIDEO event type.
1992-09-08 11:59:04 +00:00
Guido van Rossum 4e16098ce7 Added a _v21 def to FL.py and added two new input field types
Added runcall(func, *args) interfaces to profile.py, bdb.py, pdb.py, wdb.py
Added new module bisect.py and used it in sched.py.
Mostly cosmetic changes to profile.py (changed output format).
1992-09-02 20:43:20 +00:00
Guido van Rossum 23efba4cd1 Rewritten to use bdb.Bdb as base class. 1992-01-27 16:58:47 +00:00
Guido van Rossum 7ac1c81f4f Added 'r(et)v(al) command.
Added pdd (post-mortem debugging) method to class Pdb.
1992-01-16 13:55:21 +00:00
Guido van Rossum 6fe08b0fe4 Moved documentation out to pdb.doc file.
Moved class Cmd out to module cmd.py.
Rewrote implementation of stack trace to incorporate traceback objects.
1992-01-16 13:50:21 +00:00
Guido van Rossum 92df0c67d0 Added to-do list. 1992-01-14 18:30:15 +00:00
Guido van Rossum b914257366 Almost complete rewritten. Documentation added.
Simple interface "pdb.run('<statement>')" added.
1992-01-12 23:32:55 +00:00
Guido van Rossum d6c3f25f3e react to interrupts differently 1992-01-12 23:26:55 +00:00
Guido van Rossum 921c82401b Initial revision 1992-01-10 14:54:42 +00:00