Interactively tracing execution of a command¶
- sage.misc.trace.trace(code, preparse=True)[source]¶
Evaluate Sage code using the interactive tracer and return the result. The string
code
must be a valid expression enclosed in quotes (no assignments - the result of the expression is returned). In the Sage notebook this just raises a NotImplementedException.INPUT:
code
– stringpreparse
– boolean (default:True
); ifTrue
, run expression through the Sage preparser
REMARKS: This function is extremely powerful! For example, if you want to step through each line of execution of, e.g.,
factor(100)
, typesage: from sage.misc.trace import trace sage: trace("factor(100)") # not tested
>>> from sage.all import * >>> from sage.misc.trace import trace >>> trace("factor(100)") # not tested
from sage.misc.trace import trace trace("factor(100)") # not tested
then at the (Pdb) prompt type
s
(orstep
), then press Return over and over to step through every line of Python that is called in the course of the above computation. Type?
at any time for help on how to use the debugger (e.g.,l
lists 11 lines around the current line;bt
gives a back trace, etc.).Setting a break point: If you have some code in a file and would like to drop into the debugger at a given point, put the following code at that point in the file:
import pdb; pdb.set_trace()
For an article on how to use the Python debugger, see http://www.onlamp.com/pub/a/python/2005/09/01/debugger.html