Skip to content

Traceback line number does not match error report line number #31

Description

@masahiro331

Pull Request #30

Sometimes an error report line is reported incorrectly

tb.tb_fame.f_lineno may differ in some way.
Must use tb.tb_lineno

sentry-sdk/event.py

class Event(Mapping):
    __slots__ = ("_data", "_exc_value")

    def __init__(self, data={}):
        self._data = {
            "event_id": uuid.uuid4().hex,
            "timestamp": datetime.datetime.utcnow(),
            "level": "error",
        }

        self._data.update(data)

        self._exc_value = None

    def set_exception(self, exc_type, exc_value, tb, with_locals):
        print("----------------- trace back --------------------")
        print("f_lineno:  " + str(tb.tb_next.tb_next.tb_frame.f_lineno))
        print("tb_lineno: " + str(tb.tb_next.tb_next.tb_lineno))
        print("f_lineno:  " + str(tb.tb_next.tb_next.tb_next.tb_frame.f_lineno))
        print("tb_lineno: " + str(tb.tb_next.tb_next.tb_next.tb_lineno))
        print("f_lineno:  " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_frame.f_lineno))
        print("tb_lineno: " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_lineno))
        print("f_lineno:  " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_next.tb_frame.f_lineno))
        print("tb_lineno: " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_next.tb_lineno))
        print("f_lineno:  " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_frame.f_lineno))
        print("tb_lineno: " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_lineno))
        print("f_lineno:  " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_frame.f_lineno))
        print("tb_lineno: " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_lineno))
        print("f_lineno:  " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_frame.f_lineno))
        print("tb_lineno: " + str(tb.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_next.tb_lineno))
        print("----------------- trace back --------------------")
        self["exception"] = {
            "values": exceptions_from_error_tuple(exc_type, exc_value, tb, with_locals)
        }
        self._exc_value = exc_value

trace back

        File "example.py", line 128, in _get_response
          response = self.process_exception_by_middleware(e, request)
        File "example.py", line 126, in _get_response
          response = wrapped_callback(request, *callback_args, **callback_kwargs)
        File "example.py", line 54, in wrapped_view
          return view_func(*args, **kwargs)
        File "example.py", line 69, in view
          return self.dispatch(request, *args, **kwargs)
        File "example.py", line 483, in dispatch
          response = self.handle_exception(exc)
        File "example.py", line 443, in handle_exception
          self.raise_uncaught_exception(exc)
        File "example.py", line 480, in dispatch
          response = handler(request, *args, **kwargs)
        File "example.py", line 210, in post

output

----------------- trace back --------------------
f_lineno:  128
tb_lineno: 126
f_lineno:  54
tb_lineno: 54
f_lineno:  69
tb_lineno: 69
f_lineno:  483
tb_lineno: 483
f_lineno:  443
tb_lineno: 443
f_lineno:  483
tb_lineno: 480
f_lineno:  213
tb_lineno: 210
----------------- trace back --------------------

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions