Core API: Debugging¶
- construct.Probe(into=None, lookahead=None)¶
Probe that dumps the context, and some stream content (peeks into it) to the screen to aid the debugging process. It can optionally limit itself to a single context entry, instead of printing entire context.
- Parameters:
into – optional, None by default, or context lambda
lookahead – optional, integer, number of bytes to dump from the stream
Example:
>>> d = Struct( ... "count" / Byte, ... "items" / Byte[this.count], ... Probe(lookahead=32), ... ) >>> d.parse(b"\x05abcde\x01\x02\x03") -------------------------------------------------- Probe, path is (parsing), into is None Stream peek: (hexlified) b'010203'... Container: count = 5 items = ListContainer: 97 98 99 100 101 --------------------------------------------------
>>> d = Struct( ... "count" / Byte, ... "items" / Byte[this.count], ... Probe(this.count), ... ) >>> d.parse(b"\x05abcde\x01\x02\x03") -------------------------------------------------- Probe, path is (parsing), into is this.count 5 --------------------------------------------------
- construct.setGlobalPrintFullStrings(enabled=False)¶
When enabled, Container __str__ produces full content of bytes and unicode strings, otherwise and by default, it produces truncated output (16 bytes and 32 characters).
- Parameters:
enabled – bool
- construct.setGlobalPrintFalseFlags(enabled=False)¶
When enabled, Container __str__ that was produced by FlagsEnum parsing prints all values, otherwise and by default, it prints only the values that are True.
- Parameters:
enabled – bool
- construct.setGlobalPrintPrivateEntries(enabled=False)¶
When enabled, Container __str__ shows keys like _ _index _etc, otherwise and by default, it hides those keys. __repr__ never shows private entries.
- Parameters:
enabled – bool
- construct.Debugger(subcon)¶
PDB-based debugger. When an exception occurs in the subcon, a debugger will appear and allow you to debug the error (and even fix it on-the-fly).
- Parameters:
subcon – Construct instance, subcon to debug
Example:
>>> Debugger(Byte[3]).build([]) -------------------------------------------------- Debugging exception of <Array: None> path is (building) File "/media/arkadiusz/MAIN/GitHub/construct/construct/debug.py", line 192, in _build return self.subcon._build(obj, stream, context, path) File "/media/arkadiusz/MAIN/GitHub/construct/construct/core.py", line 2149, in _build raise RangeError("expected %d elements, found %d" % (count, len(obj))) construct.core.RangeError: expected 3 elements, found 0 > /media/arkadiusz/MAIN/GitHub/construct/construct/core.py(2149)_build() -> raise RangeError("expected %d elements, found %d" % (count, len(obj))) (Pdb) q --------------------------------------------------