fukamachi / supertrace

Superior Common Lisp `trace` functionality for debugging/profiling real world applications.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

supertrace

Build Status

Superior Common Lisp trace functionality for debugging/profiling real world applications.

Warning

This software is still ALPHA quality. The APIs will be likely to change.

Usage

;; List a function names to trace
(supertrace dbi:execute dbi:prepare)

;; Trace all exported functions from 'dbi' package and 'dex:request'
(supertrace (package dbi) dex:request)

;; Custom before/after functions
(supertrace (package dbi) dex:request
            :before #'before-logger      ;; <- A function takes 2 arguments -- a function name and arguments
            :after #'after-logger)       ;; <- A function takes 4 arguments -- a function name, arguments, returned value and elapsed time in microsecond.

Output is like as follows:

running <DBI.DRIVER> (prepare #<dbd.postgres:dbd-postgres-connection {1001937FF3}> "SELECT COUNT(*) AS \"count\" FROM \"entry\" WHERE \"user_id\" = ?")
0.210ms <DBI.DRIVER> (prepare #<dbd.postgres:dbd-postgres-connection {1001937FF3}> "SELECT COUNT(*) AS \"count\" FROM \"entry\" WHERE \"user_id\" = ?") -> #<dbd.postgres:dbd-postgres-query {100459D6A3}>
running <DBI.DRIVER> (execute #<dbd.postgres:dbd-postgres-query {100459D6A3}> "eb073a91-d098-4c38-805b-cede8e39d278")
0.565ms <DBI.DRIVER> (execute #<dbd.postgres:dbd-postgres-query {100459D6A3}> "eb073a91-d098-4c38-805b-cede8e39d278") -> #<dbd.postgres:dbd-postgres-query {100459D6A3}>

Options

  • :before: A function to run before the function call
  • :after: A function to run after the function call
  • :threshold: Run :after function only when the elapsed time exceeded this value. (in microsecond)

Supported implementations

  • SBCL
  • Clozure CL
  • Others

Author

Copyright

Copyright (c) 2020 Eitaro Fukamachi (e.arrows@gmail.com)

License

Licensed under the BSD 2-Clause License.

About

Superior Common Lisp `trace` functionality for debugging/profiling real world applications.


Languages

Language:Common Lisp 100.0%