Assorted debugging facilities.
Project description
Assorted debugging facilities.
Latest release 20230610:
- DebuggingRLock fixes.
- Move @trace from cs.py.func to cs.debug.
- Drop Lock and RLock alias factories - importers should just use the debugging lock classes directly.
- Rename threading.Thread to threading_Thread.
- Simplify the debugging lock classes.
Function DEBUG(f, force=False)
Decorator to wrap functions in timing and value debuggers.
Function debug_object_shell(o, prompt=None)
Interactive prompt for inspecting variables.
Class DebuggingLock(DebugWrapper, types.SimpleNamespace)
Wrapper class for threading.Lock
to trace creation and use.
cs.threads.Lock()
returns one of these in debug mode or a raw
threading.Lock
otherwise.
Class DebuggingRLock(DebugWrapper, types.SimpleNamespace)
Wrapper class for threading.RLock to trace creation and use.
cs.threads.RLock()
returns on of these in debug mode or a raw
threading.RLock
otherwise.
Class DebugShell(cmd.Cmd)
An interactive prompt for python statements, attached to /dev/tty
by default.
Class DebugWrapper(types.SimpleNamespace)
Base class for classes presenting debugging wrappers.
Function DF(func, *a, **kw)
Wrapper for a function call to debug its use.
This requires rewriting the call from f(*a,*kw)
to DF(f,*a,**kw)
.
Alternatively one could rewrite as DEBUG(f)(*a,**kw)
.
Class Lock(DebugWrapper, types.SimpleNamespace)
Wrapper class for threading.Lock
to trace creation and use.
cs.threads.Lock()
returns one of these in debug mode or a raw
threading.Lock
otherwise.
Function openfiles(substr=None, pid=None)
Run lsof(8) against process pid
returning paths of open files whose paths contain substr
.
Parameters:
substr
: default substring to select by; default returns all paths.pid
: process to examine; default fromos.getpid()
.
Class RLock(DebugWrapper, types.SimpleNamespace)
Wrapper class for threading.RLock to trace creation and use.
cs.threads.RLock()
returns on of these in debug mode or a raw
threading.RLock
otherwise.
Function selftest(module_name, defaultTest=None, argv=None)
Called by my unit tests.
Function stack_dump(stack=None, limit=None, logger=None, log_level=None)
Dump a stack trace to a logger.
Parameters:
stack
: a stack list as returned bytraceback.extract_stack
. If missing orNone
, use the result oftraceback.extract_stack()
.limit
: a limit to the number of stack entries to dump. If missing orNone
, dump all entries.logger
: alogger.Logger
ducktype or the name of a logger. If missing orNone
, obtain a logger fromlogging.getLogger()
.log_level
: the logging level for the dump. If missing orNone
, usecs.logutils.loginfo.level
.
Function thread_dump(Ts=None, fp=None)
Write thread identifiers and stack traces to the file fp
.
Parameters:
Ts
: theThread
s to dump; if unspecified usethreading.enumerate()
.fp
: the file to which to write; if unspecified usesys.stderr
.
Class TimingOutLock
A Lock
replacement which times out, used for locating deadlock points.
Function trace(*da, **dkw)
Decorator to report the call and return of a function.
Function trace_caller(func)
Decorator to report the caller of a function when called.
Class TraceSuite
Context manager to trace start and end of a code suite.
Release Log
Release 20230610:
- DebuggingRLock fixes.
- Move @trace from cs.py.func to cs.debug.
- Drop Lock and RLock alias factories - importers should just use the debugging lock classes directly.
- Rename threading.Thread to threading_Thread.
- Simplify the debugging lock classes.
Release 20221118: stack_dump: cope when cs.logutils.setup_logging not run yet.
Release 20211208: @trace moved to cs.pyfunc, other minor changes.
Release 20200318: Remove use of cs.obj.O, universally supplanted by types.SimpleNamespace.
Release 20181231:
- New TimingOutLock for locating deadlock points, grew from debugging cs.vt.index.
- Other minor changes.
Release 20171231:
- Update imports for recentchanges.
- New context manager TraceSuite to trace start and end of a code suite.
Release 20160918: selftest(): fix parameter ordering to match unittest.
Release 20160828: Update metadata with "install_requires" instead of "requires".
Release 20160827:
- New openfiles() to return selected pathnames of open files via lsof(8).
- New selftest() to invoke unittests with benefits.
- DebugShell, a cmd.Cmd subclass for debugging - current use case calls this with self.dict in a test case tearDwon.
- debug_object_shell: convenience wrapper for DebugShell to call it on an object's attributes.
Release 20150116: PyPI prep.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cs.debug-20230610-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0a637dc70f839c5fb1bdee0d1f5fb8e4a897aac5234e71129946cc9f7db16e4 |
|
MD5 | 1b10974ffa1e839a2e8b26f88c766f62 |
|
BLAKE2b-256 | ae9252386d79ee2d753f38b716067739b59fe2d63bff2be7bd77d42013d1458e |