Hi, I was wondering if there was a way to “walk through” each createCmd or exerciseCmd within daml script (without going through the transaction tree)? Almost like a debug mode where you hit script results and it will go step by step through each action in the script
Hi, @austin… the Daml Studio plugin does not provide a step debug feature for Daml Script.
As you rightly point out, the transaction tree view can give you the same insight, though not as a step debugging experience.
Sometimes I find myself temporarily adding debug
statements to track down a bug.
Got it, I thinking for a use case where you had to look at someone else’s script, so you can see the state of the “ledger” after each of the steps without having to comment everything else out, for example
Your follow up comment reminds me of another trick I’ve seen.
You can insert an abort ""
in the Daml Script and move it up-and-down the script with option + up
and option + down
on the keyboard.
It’s similar to commenting out the “remainder” of a script to see the intermediate state. However, it requires fewer keystrokes.
A couple of things:
- Each top-level transaction in the transaction view corresponds to a “step” in the script, so it acts as a detailed trace of the entire execution of the script.
- If your script is particularly long, creating a
Checkpoint
contract at suitable points in the script can allow you to quickly orient yourself between the transaction log and the script — if you include adetail : Text
field, you can also use it make any interesting state immediately accessible. Keep in mind though that there is no state outside the ledger, so by definition it can’t show any state that isn’t already visible in pervious transactions; however, if the log is long enough to require a checkpoint, it is probably long enough this is a useful convenience.
template Checkpoint
with
p : Party
label : Text
detail : Text
where
signatory p