Log Printing
Qiling logging uses Python's logging
module indirectly, and may be used anywhere Qiling instance is available.
ql.log.info('Hello from Qiling Framework!')
Verbosity
Qiling logging verbosity may configure to various verbosity levels based on one's needs. This does no affect the program's output in any way. By default, Qiling logging verbosity is set to logging.INFO
.
verbose
from qiling.const import QL_VERBOSE
ql = Qiling([r'/bin/ls'], r'examples/rootfs/x86_linux', verbose=QL_VERBOSE.DEBUG)
Verbosity Level | Desciprtion |
---|---|
QL_VERBOSE.DISABLED |
logging is disabled entirely |
QL_VERBOSE.OFF |
logging is restricted to warnings, errors and critical entries |
QL_VERBOSE.DEFAULT |
info verbosity |
QL_VERBOSE.DEBUG |
debug verbosity; increased verbosity |
QL_VERBOSE.DISASM |
emit disassembly for every emulated instruction; this implies debug verbosity |
QL_VERBOSE.DUMP |
emit cpu context along with disassembled instructions; this implies debug verbosity |
Note that Qiling verbose
property may be configured dynamically throughout the emulation.
ql.filter
Qiling log entires may be filteres using a regular expression. That may help filtering excessive logs and focusing on what matters.
from qiling import Qiling
if __name__ == "__main__":
ql = Qiling([r'examples/rootfs/arm_linux/bin/arm_hello'], r'examples/rootfs/arm_linux')
# show only log entries that start with "open"
ql.filter = '^open'
ql.run()