When something goes wrong, you will usually see a Python
``exception''. Python even tries to suggest what
raised the exception. Often you see the name of the exception, e.g.,
NameError
or ValueError
(see the Python Reference Manual
[Py] for a complete list of exceptions). For example,
sage: 3_2 ------------------------------------------------------------ File "<console>", line 1 ZZ(3)_2 ^ SyntaxError: invalid syntax sage: EllipticCurve([0,infinity]) ------------------------------------------------------------ Traceback (most recent call last): ... TypeError: Unable to coerce Infinity (<class 'sage...Infinity'>) to Rational
The interactive debugger is sometimes useful for understanding what
went wrong. You can toggle it being on or off using
%pdb
(the default is off).
The prompt ipdb>
appears if an exception is raised and the
debugger is on. From within the debugger, you can print the state of
any local variable, and move up and down the execution stack. For
example,
sage: %pdb Automatic pdb calling has been turned ON sage: EllipticCurve([1,infinity]) --------------------------------------------------------------------------- <type 'exceptions.TypeError'> Traceback (most recent call last) ... ipdb>
?
at
the ipdb>
prompt:
ipdb> ? Documented commands (type help <topic>): ======================================== EOF break commands debug h l pdef quit tbreak a bt condition disable help list pdoc r u alias c cont down ignore n pinfo return unalias args cl continue enable j next pp s up b clear d exit jump p q step w whatis where Miscellaneous help topics: ========================== exec pdb Undocumented commands: ====================== retval rv
Type Ctrl-D or quit
to return to Sage.
See About this document... for information on suggesting changes.