diff --git a/README.md b/README.md index 4b4bf9ec..6a1cbadc 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,20 @@ python3 demo/gittk.py # pip install pygments python3 tests/test.ui.018.TextEdit.Pygments.py README.md ``` + +#### Debug +There are few ENV Variables that can be used to force some debugging features; +##### (TERMTK_LOG_TO) - Log to a file +To force a file logging +```bash +TERMTK_LOG_TO=session.log python3 demo/demo.py +``` +##### (TERMTK_STACKTRACE) - Force stacktrace generation with CTRL+C +Use this env variable to force a stacktrace generation to "**stacktrace.txt**" +```bash +TERMTK_STACKTRACE=1 python3 demo/demo.py +``` + #### Profiling ##### [VizTracer](https://pypi.org/project/viztracer/) diff --git a/TermTk/TTkCore/ttk.py b/TermTk/TTkCore/ttk.py index 559da12f..562fbd74 100644 --- a/TermTk/TTkCore/ttk.py +++ b/TermTk/TTkCore/ttk.py @@ -86,6 +86,9 @@ class TTk(TTkWidget): 'paintExecuted') def __init__(self, *args, **kwargs): + if ('TERMTK_LOG_TO' in os.environ and (_logFile := os.environ['TERMTK_LOG_TO'])): + TTkLog.use_default_file_logging(_logFile) + self.paintExecuted = pyTTkSignal() super().__init__(*args, **kwargs) self._termMouse = True @@ -307,7 +310,12 @@ class TTk(TTkWidget): # TODO: Restart threads # TODO: Redraw the screen - def _SIGINT(self, signum, frame): + def _SIGINT(self, signum, fraTERMTK_STACKTRACEme): + if ('TERMTK_STACKTRACE' in os.environ and os.environ['TERMTK_STACKTRACE'] == '1'): + with open('stacktrace.txt','w') as f: + import faulthandler + faulthandler.dump_traceback(f) + TTkLog.debug("Captured SIGINT ") # Deregister the handler # so CTRL-C can be redirected to the default handler if the app does not exit