From 0ce37a69d449708e3838561d6bc294d8977b8d83 Mon Sep 17 00:00:00 2001 From: JustAnotherArchivist Date: Fri, 29 May 2020 22:29:23 +0000 Subject: [PATCH] Log exception details on crashes --- snscrape/cli.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/snscrape/cli.py b/snscrape/cli.py index c875c9e..eccd73e 100644 --- a/snscrape/cli.py +++ b/snscrape/cli.py @@ -93,13 +93,19 @@ def _dump_locals_on_exception(): except Exception as e: trace = inspect.trace() if len(trace) >= 2: - name = _dump_stack_and_locals(trace[1:]) + name = _dump_stack_and_locals(trace[1:], exc = e) logger.fatal(f'Dumped stack and locals to {name}') raise -def _dump_stack_and_locals(trace): +def _dump_stack_and_locals(trace, exc = None): with tempfile.NamedTemporaryFile('w', prefix = 'snscrape_locals_', delete = False) as fp: + if exc is not None: + fp.write('Exception:\n') + fp.write(f' {type(exc).__module__}.{type(exc).__name__}: {exc!s}\n') + fp.write(f' args: {exc.args!r}\n') + fp.write('\n') + fp.write('Stack:\n') for frameRecord in trace: fp.write(f' File "{frameRecord.filename}", line {frameRecord.lineno}, in {frameRecord.function}\n')