Did you know ... Search Documentation:
Packs (add-ons) for SWI-Prolog

Package "must_trace"

Title:Trace with your eyeballs instead of your fingers
Rating:Not rated. Create the first rating!
Latest version:1.1.118
SHA1 sum:f85126e7d8048915e68287b49948adc5a0d5ded2
Author:Douglas R. Miles <logicmoo@gmail.com>
Maintainer:TeamSPoon https://github.com/TeamSPoon/
Packager:TeamSPoon/LogicMoo https://github.com/TeamSPoon/
Home page:https://github.com/TeamSPoon/must_trace
Download URL:https://github.com/TeamSPoon/must_trace/releases/*.zip
Requires:clause_attvars
hook_hybrid
logicmoo_utils
loop_check
with_thread_local
xlisting

Reviews

No reviews. Create the first review!.

Details by download location

VersionSHA1#DownloadsURL
0.0.1e354b6ec94e4d210dc364c51a9cd8228c5ee2f111https://github.com/TeamSPoon/must_trace.git
0.0.2f895013ebff3d436c0b34e9b4ac3e27df7f662691https://github.com/TeamSPoon/must_trace.git
0.0.3c3e68c07da9573f4a336407a6abe2ec28011bb951https://github.com/TeamSPoon/must_trace.git
0.0.407fe5d8c0134aee8bd3ce3308c6bb5a5b5b37ff72https://github.com/TeamSPoon/must_trace.git
0.0.71fca12a042628348a55ab4c119f22583d1ef27921https://github.com/TeamSPoon/must_trace.git
1.1.11162577ed7d8cf77b192383033ad98f14f0cf8c2622https://github.com/TeamSPoon/must_trace.git
1.1.112ead6c6442e0afb7083693f340f8f45c8c56c222c1https://github.com/TeamSPoon/must_trace.git
1.1.1151ac84baca53d33e5e7aeef415ecf8a502fb0451b1https://github.com/TeamSPoon/must_trace.git
1.1.1176b2a225aab4f39ad854e76036bb789cf6bc0b2e51https://github.com/TeamSPoon/must_trace.git
1.1.11800348433724541e490540024864a2150445e400d1https://github.com/TeamSPoon/must_trace.git
021c7401c4e5f396c487d4cb03a84f6bbbc338ce1https://github.com/TeamSPoon/must_trace.git
08ac6abc2594efad9ad7bb684335e0cbe45b37231https://github.com/TeamSPoon/must_trace.git
4137477032436b5c64a6fe5574fd431aba6b6af71https://github.com/TeamSPoon/must_trace.git
5d22b6b4c9c05ffe3bbad8bed51e2d3d44aa1a2a1https://github.com/TeamSPoon/must_trace.git
61becd52fa657bf474b4b89a63913d503c9f19021https://github.com/TeamSPoon/must_trace.git
b5be4dd2a590d66bb1e7e10f2673a98a1946a70a1https://github.com/TeamSPoon/must_trace.git
f85126e7d8048915e68287b49948adc5a0d5ded21https://github.com/TeamSPoon/must_trace.git

Trace with your eyeballs instead of your fingers

This is a miniture part of a very large debugging library... Some better parts of that library are not yet added.

Here are current uses:

Wrap quietly/1 over parts of your code you no longer need to stepped thru. This is a nondeterministic version of notrace/1!

Wrap must/1 over parts of your code you do not trust yet. If your code fails.. it will rewind to your entry block (at the scope of this declaration) and invoke rtrace/1 . If there are 50 steps to your code, it will save you from pushing creep 50 times. Instead it turns off the leash to allow you to trace with your eyeballs instead of your fingers

Wrap sanity/1 over parts of your code you want to turn on/off that is only usefull for slow debugging

Wrap nop/1 over parts of your code you do not want to quickly comment out yet not break syntax.

Installation using SWI-Prolog 7.5.x or later (due to duplicate transitive deps failing in earlier versions):

`?- pack_install('https://github.com/TeamSPoon/must_trace.git'). `

TODO Document all the preds! TODO More Examples!

Source code available and pull requests accepted at http://github.com/TeamSPoon/must_trace


?- use_module(library(must_trace)).
true.

?- rtrace(member(X,[1,2,3])).
   Call: (9) lists:member(_8730, [1, 2, 3])
   Unify: (9) lists:member(_8730, [1, 2, 3])
   Exit: (9) lists:member(1, [1, 2, 3])
X = 1 ;
   Redo: (9) lists:member(_8730, [1, 2, 3])
   Exit: (9) lists:member(2, [1, 2, 3])
X = 2 ;
   Redo: (9) lists:member(_8730, [1, 2, 3])
   Exit: (9) lists:member(3, [1, 2, 3])
X = 3.

?-  rtrace(member(X,[1,2,3])),member(Y,[4,5]).
   Call: (10) lists:member(_10508, [1, 2, 3])
   Unify: (10) lists:member(_10508, [1, 2, 3])
   Exit: (10) lists:member(1, [1, 2, 3])
X = 1,
Y = 4 ;
X = 1,
Y = 5 ;
   Redo: (10) lists:member(_10508, [1, 2, 3])
   Exit: (10) lists:member(2, [1, 2, 3])
X = 2,
Y = 4 ;
X = 2,
Y = 5 ;
   Redo: (10) lists:member(_10508, [1, 2, 3])
   Exit: (10) lists:member(3, [1, 2, 3])
X = 3,
Y = 4 ;
X = 3,
Y = 5.

?- rtrace((member(X,[1,2,3]),member(Y,[4,5]))).
   Call: (10) lists:member(_11854, [1, 2, 3])
   Unify: (10) lists:member(_11854, [1, 2, 3])
   Exit: (10) lists:member(1, [1, 2, 3])
   Call: (10) lists:member(_11872, [4, 5])
   Unify: (10) lists:member(_11872, [4, 5])
   Exit: (10) lists:member(4, [4, 5])
X = 1,
Y = 4 ;
   Redo: (10) lists:member(_11872, [4, 5])
   Exit: (10) lists:member(5, [4, 5])
X = 1,
Y = 5 ;
   Redo: (10) lists:member(_11854, [1, 2, 3])
   Exit: (10) lists:member(2, [1, 2, 3])
   Call: (10) lists:member(_11872, [4, 5])
   Unify: (10) lists:member(_11872, [4, 5])
   Exit: (10) lists:member(4, [4, 5])
X = 2,
Y = 4 ;
   Redo: (10) lists:member(_11872, [4, 5])
   Exit: (10) lists:member(5, [4, 5])
X = 2,
Y = 5 ;
   Redo: (10) lists:member(_11854, [1, 2, 3])
   Exit: (10) lists:member(3, [1, 2, 3])
   Call: (10) lists:member(_11872, [4, 5])
   Unify: (10) lists:member(_11872, [4, 5])
   Exit: (10) lists:member(4, [4, 5])
X = 3,
Y = 4 ;
   Redo: (10) lists:member(_11872, [4, 5])
   Exit: (10) lists:member(5, [4, 5])
X = 3,
Y = 5.

Some TODOs

Document this pack!

Write tests

Untangle the 'pack' install deps (Moving predicates over here from logicmoo_base)

Not obligated to maintain a git fork just to contribute

Dislike having tons of forks that are several commits behind the main git repo?

Be old school - Please ask to be added to TeamSPoon and Contribute directly !

Still, we wont stop you from doing it the Fork+PullRequest method

BSD 2-Clause License

Copyright (c) 2017, TeamSPoon and Douglas Miles <logicmoo@gmail.com> All rights reserved.

Contents of pack "must_trace"

Pack contains 16 files holding a total of 493K bytes.