Difference between revisions of "Studio:Debugging Helps"

From STRIDE Wiki
Jump to: navigation, search
m
Line 1: Line 1:
= Script Debugging Techniques =
+
= Script Debugging Helps =
 
Listed here are some simple debugging techniques that will aid in understanding and troubleshooting scripts that drive STRIDE tests.
 
Listed here are some simple debugging techniques that will aid in understanding and troubleshooting scripts that drive STRIDE tests.
  
Line 6: Line 6:
 
== PrintMessage() ==
 
== PrintMessage() ==
  
The studio object provides a way to perform printf-style debugging of scripts running within STRIDE Studio.
+
The '''studio''' object provides a way to perform printf-style debugging of scripts running within STRIDE Studio.
  
 
PrintMessage allows you to log messages from running scripts and view the values of variables during script execution.
 
PrintMessage allows you to log messages from running scripts and view the values of variables during script execution.
Line 37: Line 37:
 
</pre>
 
</pre>
  
 +
=== Sample Output ===
 
Note that the single argument to the '''PrintMessage()''' function will accept any expression that perl can interpret as a string. Shown below is output from the sample script.
 
Note that the single argument to the '''PrintMessage()''' function will accept any expression that perl can interpret as a string. Shown below is output from the sample script.
  
Line 44: Line 45:
  
 
== MessageBox() ==
 
== MessageBox() ==
The ascript object provides a way to interrupt script execution and display a modal message box containing a message you specify.
+
The '''ascript''' object provides a way to interrupt script execution and display a modal message box containing a message you specify.
  
 
Here's an example of its use in a perl script:
 
Here's an example of its use in a perl script:
Line 73: Line 74:
 
}
 
}
 
</pre>
 
</pre>
 +
 +
=== Sample Output ===
 
The displayed message box can be customized in several ways; see online help and autosense for details. Shown below is output from the sample script.
 
The displayed message box can be customized in several ways; see online help and autosense for details. Shown below is output from the sample script.
  
Line 81: Line 84:
 
= Exception Messages =
 
= Exception Messages =
 
Most calls to STRIDE scripting objects will throw an exception to indicate that an error has occured. The descriptions that accompany these exceptions can be very helpful in identifying the source of the error and correcting it.
 
Most calls to STRIDE scripting objects will throw an exception to indicate that an error has occured. The descriptions that accompany these exceptions can be very helpful in identifying the source of the error and correcting it.
 +
 +
Below is a sample of the dialog that's shown when an exception occurs (and the exception is not caught by the script).
  
 
<center>
 
<center>
Line 86: Line 91:
 
</center>
 
</center>
  
To ensure that these errors are seen by your perl script, be sure to follow the  [[How_do_I_get_Perl_scripts_to_emit_fatal_errors_when_a_COM_error_occurs%3F|recommendation here]].
+
This behavior is the default in '''JScript'''.
 +
 
 +
''This is not the case in '''perl'''''. To ensure that these errors are seen by your perl script, be sure to follow the  [[How_do_I_get_Perl_scripts_to_emit_fatal_errors_when_a_COM_error_occurs%3F|recommendation here]].

Revision as of 17:49, 4 February 2008

Script Debugging Helps

Listed here are some simple debugging techniques that will aid in understanding and troubleshooting scripts that drive STRIDE tests.

As you work through the training scripts, you may find it helpful to insert one or more of the following debugging helps as an aid in understanding the flow of execution or to investigate the value of variables and expressions as the script runs.

PrintMessage()

The studio object provides a way to perform printf-style debugging of scripts running within STRIDE Studio.

PrintMessage allows you to log messages from running scripts and view the values of variables during script execution.

perl example

Here's an example of its use in a perl script:

my $funcs = $main::ascript->Functions;

# loop through each captured function
foreach (0..($funcs->Count - 1)) {
   my $f = $funcs->Item($_);
   # send output to Studio Messages window
   $main::studio->Output->PrintMessage("function item ".$_." ".$f->Name);
}

JScript example

Here's and example of its use in JScript:

var funcs = ascript.Functions;

for (var i = 0; i < funcs.Count; i++)
{
    var f = funcs.Item(i);
    studio.Output.PrintMessage("function item " + i + " " + f.Name);
}

Sample Output

Note that the single argument to the PrintMessage() function will accept any expression that perl can interpret as a string. Shown below is output from the sample script.

PrintMessageOutput.jpg

MessageBox()

The ascript object provides a way to interrupt script execution and display a modal message box containing a message you specify.

Here's an example of its use in a perl script:

my $funcs = $main::ascript->Functions;

# loop through each captured function
foreach (0..($funcs->Count - 1)) {
   my $f = $funcs->Item($_);
   # send output to Studio Messages window
   $main::ascript->MessageBox("function item ".$_." ".$f->Name,
                              "Debug Output");
}

JScript example

Here's an example of its use in JScript:

var funcs = ascript.Functions;

for (var i = 0; i < funcs.Count; i++)
{
    var f = funcs.Item(i);
    ascript.MessageBox("function item " + i + " " + f.Name,
                       "Debugging output");
}

Sample Output

The displayed message box can be customized in several ways; see online help and autosense for details. Shown below is output from the sample script.

MessageBoxOutput.jpg

Exception Messages

Most calls to STRIDE scripting objects will throw an exception to indicate that an error has occured. The descriptions that accompany these exceptions can be very helpful in identifying the source of the error and correcting it.

Below is a sample of the dialog that's shown when an exception occurs (and the exception is not caught by the script).

ExceptionDialogExample.jpg

This behavior is the default in JScript.

This is not the case in perl. To ensure that these errors are seen by your perl script, be sure to follow the recommendation here.