Jmol/debugging: Difference between revisions

From Proteopedia
Jump to navigationJump to search
Karsten Theis (talk | contribs)
m User:Karsten Theis/Jmol/debugging moved to Jmol/debugging: So others can edit
Eric Martz (talk | contribs)
 
(2 intermediate revisions by the same user not shown)
Line 4: Line 4:
== General debugging techniques ==
== General debugging techniques ==


There are multiple ways to insert breakpoints into Jmol scripts, pausing the script to verify the script progresses to a certain point, and allowing you to check the state of variables at this point. The "pause" command pauses the script and gives control to you until you type "resume" in the console. The "prompt" command, given without parameters, opens a pop-up screen with the stack trace of the script.
There are multiple ways to '''insert breakpoints''' into Jmol scripts, pausing the script to verify the script progress at a certain point, and allowing you to check the state of variables at this point. The "pause" command pauses the script and gives control to you until you type "resume" in the console. The "prompt" command, given without parameters, opens a pop-up screen with the stack trace of the script.


There are a variety of commands described under "set (debugging)" in the [https://chemapps.stolaf.edu/jmol/docs/#setdebugging manual] that help with debugging and analyzing program crashes. For example, you can use the history function in the Jmol console to see which commands executed after setting the historyLevel to a non-zero value.
There are a variety of commands described under "'''set (debugging)'''" in the [https://chemapps.stolaf.edu/jmol/docs/#setdebugging manual] that help with debugging and analyzing program crashes. For example, you can use the history function in the Jmol console to see which commands executed after setting the historyLevel to a non-zero value.


Of course, it is also possible to add strategic "print" statements to the script but the techniques described above are more flexible because they pause the script or give you a chance of a post-mortem analysis.
Of course, it is also possible to add '''strategic "print" statements''' to the script but the techniques described above are more flexible because they pause the script or give you a chance of a post-mortem analysis.


== Techniques specific to the Jmol application ==
== Techniques specific to the Jmol application ==
Line 15: Line 15:


== Techniques specific to JSmol run in a browser ==
== Techniques specific to JSmol run in a browser ==
When JSmol is running in a browser, bugs can occur either in the browser javascript that sends commands to JSmol, or in the JSmol commands themselves. To look for bugs in javascript, open the browser's console. For example, in Firefox: Tools, Web Developer, Browser Console.


You can use the JSmol Console to query variable values as
To open the JSmol Console: Right click in JSmol so that the menu appears, and then click on Console.
 
You can use the JSmol Console to query variable values:
 
<nowiki>print jmol-expression</nowiki>
 
or


  <nowiki>javascript alert(javascript-expression)</nowiki>
  <nowiki>javascript alert(javascript-expression)</nowiki>


<!-- I don't think this makes any sense because if you are in the JSmol Console, you can use the
above 'print' command. -Eric Martz 4/12/2021
or
or


  <nowiki>javascript alert(jmolEvaluate(jmol-expression))</nowiki>
  <nowiki>javascript alert(jmolEvaluate(jmol-expression))</nowiki> -->


== Acknowledgements ==
== Acknowledgements ==


Some of these techniques were suggested by [https://sourceforge.net/p/jmol/mailman/message/37260020/ Bob Hanson] and [https://sourceforge.net/p/jmol/mailman/message/37259976/ Eric Martz] in response to a query on the Jmol listserv.
Some of these techniques were suggested by [https://sourceforge.net/p/jmol/mailman/message/37260020/ Bob Hanson] and [https://sourceforge.net/p/jmol/mailman/message/37259976/ Eric Martz] in response to a query on the Jmol listserv.