Commit 3d4463b2 authored by Marius Wachtler's avatar Marius Wachtler

Merge pull request #1079 from corona10/traceback

implement tb_lineno of Traceback
parents 068a3de2 7fb8d1d7
......@@ -145,7 +145,9 @@ void setupTraceback() {
NULL));
*/
traceback_cls->giveAttrDescriptor("tb_next", traceback_tb_next, NULL);
traceback_cls->giveAttr("tb_lineno",
new BoxedMemberDescriptor(BoxedMemberDescriptor::INT,
offsetof(BoxedTraceback, line) + offsetof(LineInfo, line)));
traceback_cls->freeze();
}
}
......@@ -30,7 +30,6 @@ public:
Box* tb_next;
LineInfo line;
Box* py_lines;
BoxedTraceback(LineInfo line, Box* tb_next) : tb_next(tb_next), line(std::move(line)), py_lines(NULL) {}
DEFAULT_CLASS(traceback_cls);
......
import sys, traceback
def lumberjack():
bright_side_of_death()
def bright_side_of_death():
return tuple()[0]
try:
lumberjack()
except IndexError:
exc_type, exc_value, exc_traceback = sys.exc_info()
print "*** print_tb:"
traceback.print_tb(exc_traceback, limit=1, file=sys.stdout)
print "*** print_exception:"
traceback.print_exception(exc_type, exc_value, exc_traceback,
limit=2, file=sys.stdout)
print "*** print_exc:"
traceback.print_exc()
print "*** format_exc, first and last line:"
formatted_lines = traceback.format_exc().splitlines()
print formatted_lines[0]
print formatted_lines[-1]
print "*** format_exception:"
print repr(traceback.format_exception(exc_type, exc_value,
exc_traceback))
print "*** extract_tb:"
print repr(traceback.extract_tb(exc_traceback))
print "*** format_tb:"
print repr(traceback.format_tb(exc_traceback))
print "*** tb_lineno:", exc_traceback.tb_lineno
assert exc_traceback.tb_lineno == 10
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment