186 |
using the L</StandardScript> or L</StandardSetup> methods, emergency tracing |
using the L</StandardScript> or L</StandardSetup> methods, emergency tracing |
187 |
will be configured automatically. |
will be configured automatically. |
188 |
|
|
189 |
|
NOTE: to configure emergency tracing from the command line instead of the Debugging |
190 |
|
Control Panel (see below), use the C<trace.pl> script. |
191 |
|
|
192 |
=head3 Debugging Control Panel |
=head3 Debugging Control Panel |
193 |
|
|
194 |
The debugging control panel provides several tools to assist in development of |
The debugging control panel provides several tools to assist in development of |
448 |
noAlias => [0, "do not expect aliases in CHANGE transactions"], |
noAlias => [0, "do not expect aliases in CHANGE transactions"], |
449 |
start => [' ', "start with this genome"], |
start => [' ', "start with this genome"], |
450 |
tblFiles => [0, "output TBL files containing the corrected IDs"] }, |
tblFiles => [0, "output TBL files containing the corrected IDs"] }, |
451 |
"command transactionDirectory IDfile", |
"<command> <transactionDirectory> <IDfile>", |
452 |
@ARGV); |
@ARGV); |
453 |
|
|
454 |
|
|
460 |
|
|
461 |
TransactFeatures -trace=2 -noAlias register ../xacts IDs.tbl |
TransactFeatures -trace=2 -noAlias register ../xacts IDs.tbl |
462 |
|
|
463 |
|
Single and double hyphens are equivalent. So, you could also code the |
464 |
|
above command as |
465 |
|
|
466 |
|
TransactFeatures --trace=2 --noAlias register ../xacts IDs.tbl |
467 |
|
|
468 |
In this case, C<register>, C<../xacts>, and C<IDs.tbl> are the positional |
In this case, C<register>, C<../xacts>, and C<IDs.tbl> are the positional |
469 |
parameters, and would find themselves in I<@parameters> after executing the |
parameters, and would find themselves in I<@parameters> after executing the |
470 |
above code fragment. The tracing would be set to level 2, and the categories |
above code fragment. The tracing would be set to level 2, and the categories |
499 |
the tracing key is taken from the C<Tracing> environment variable. If there |
the tracing key is taken from the C<Tracing> environment variable. If there |
500 |
is no value for that variable, the tracing key will be computed from the PID. |
is no value for that variable, the tracing key will be computed from the PID. |
501 |
|
|
502 |
Finally, if the special option C<-h> is specified, the option names will |
Finally, if the special option C<-help> is specified, the option |
503 |
be traced at level 0 and the program will exit without processing. |
names will be traced at level 0 and the program will exit without processing. |
504 |
This provides a limited help capability. For example, if the user enters |
This provides a limited help capability. For example, if the user enters |
505 |
|
|
506 |
TransactFeatures -h |
TransactFeatures -help |
507 |
|
|
508 |
he would see the following output. |
he would see the following output. |
509 |
|
|
510 |
TransactFeatures [options] command transactionDirectory IDfile |
TransactFeatures [options] <command> <transactionDirectory> <IDfile> |
511 |
-trace tracing level (default E) |
-trace tracing level (default E) |
512 |
-sql trace SQL commands |
-sql trace SQL commands |
513 |
-safe use database transactions |
-safe use database transactions |
582 |
$options->{trace} = ['E', "tracing level (E for emergency tracing)"]; |
$options->{trace} = ['E', "tracing level (E for emergency tracing)"]; |
583 |
} |
} |
584 |
$options->{sql} = [0, "turn on SQL tracing"]; |
$options->{sql} = [0, "turn on SQL tracing"]; |
585 |
$options->{h} = [0, "display command-line options"]; |
$options->{help} = [0, "display command-line options"]; |
586 |
$options->{user} = [$tkey, "tracing key"]; |
$options->{user} = [$tkey, "tracing key"]; |
587 |
$options->{background} = [0, "spool standard and error output"]; |
$options->{background} = [0, "spool standard and error output"]; |
588 |
# Create a parsing hash from the options hash. The parsing hash |
# Create a parsing hash from the options hash. The parsing hash |
657 |
} |
} |
658 |
# Check for the "h" option. If it is specified, dump the command-line |
# Check for the "h" option. If it is specified, dump the command-line |
659 |
# options and exit the program. |
# options and exit the program. |
660 |
if ($retOptions->{h}) { |
if ($retOptions->{help}) { |
661 |
$0 =~ m#[/\\](\w+)(\.pl)?$#i; |
$0 =~ m#[/\\](\w+)(\.pl)?$#i; |
662 |
print "$1 [options] $parmHelp\n"; |
print "$1 [options] $parmHelp\n"; |
663 |
for my $key (sort keys %{$options}) { |
for my $key (sort keys %{$options}) { |
1294 |
|
|
1295 |
C<< my ($options, @arguments) = ParseCommand({ errors => 0, logFile => 'trace.log'}, @words); >> |
C<< my ($options, @arguments) = ParseCommand({ errors => 0, logFile => 'trace.log'}, @words); >> |
1296 |
|
|
1297 |
In this case, the list @words will be treated as a command line. There are two options available, |
In this case, the list @words will be treated as a command line and there are two options available, |
1298 |
B<errors> and B<logFile>. If @words has the following format |
B<errors> and B<logFile>. If @words has the following format |
1299 |
|
|
1300 |
C<< -logFile=error.log apple orange rutabaga >> |
C<< -logFile=error.log apple orange rutabaga >> |
1308 |
C<< apple orange rutabaga >> |
C<< apple orange rutabaga >> |
1309 |
|
|
1310 |
The parser allows for some escape sequences. See L</UnEscape> for a description. There is no |
The parser allows for some escape sequences. See L</UnEscape> for a description. There is no |
1311 |
support for quote characters. |
support for quote characters. Options can be specified with single or double hyphens. |
1312 |
|
|
1313 |
=over 4 |
=over 4 |
1314 |
|
|
1333 |
my ($optionTable, @inputList) = @_; |
my ($optionTable, @inputList) = @_; |
1334 |
# Process any options in the input list. |
# Process any options in the input list. |
1335 |
my %overrides = (); |
my %overrides = (); |
1336 |
while ((@inputList > 0) && ($inputList[0] =~ /^-/)) { |
while ((@inputList > 0) && ($inputList[0] =~ /^--?/)) { |
1337 |
# Get the current option. |
# Get the current option. |
1338 |
my $arg = shift @inputList; |
my $arg = shift @inputList; |
1339 |
# Pull out the option name. |
# Pull out the option name. |
1340 |
$arg =~ /^-([^=]*)/g; |
$arg =~ /^--?([^=]*)/g; |
1341 |
my $name = $1; |
my $name = $1; |
1342 |
# Check for an option value. |
# Check for an option value. |
1343 |
if ($arg =~ /\G=(.*)$/g) { |
if ($arg =~ /\G=(.*)$/g) { |
2298 |
This method converts an emergency tracing destination to a real |
This method converts an emergency tracing destination to a real |
2299 |
tracing destination. The main difference is that if the |
tracing destination. The main difference is that if the |
2300 |
destination is C<FILE> or C<APPEND>, we convert it to file |
destination is C<FILE> or C<APPEND>, we convert it to file |
2301 |
output. |
output. If the destination is C<DUAL>, we convert it to file |
2302 |
|
and standard output. |
2303 |
|
|
2304 |
=over 4 |
=over 4 |
2305 |
|
|
2329 |
$retVal = ">" . EmergencyFileTarget($tkey); |
$retVal = ">" . EmergencyFileTarget($tkey); |
2330 |
} elsif ($myDest eq 'APPEND') { |
} elsif ($myDest eq 'APPEND') { |
2331 |
$retVal = ">>" . EmergencyFileTarget($tkey); |
$retVal = ">>" . EmergencyFileTarget($tkey); |
2332 |
} else { |
} elsif ($myDest eq 'DUAL') { |
2333 |
$retVal = $myDest; |
$retVal = "+>" . EmergencyFileTarget($tkey); |
2334 |
} |
} |
2335 |
# Return the result. |
# Return the result. |
2336 |
return $retVal; |
return $retVal; |
2340 |
|
|
2341 |
C<< Emergency($key, $hours, $dest, $level, @modules); >> |
C<< Emergency($key, $hours, $dest, $level, @modules); >> |
2342 |
|
|
2343 |
Turn on emergency tracing. This method can only be invoked over the web and is |
Turn on emergency tracing. This method is normally invoked over the web from |
2344 |
should not be called if debug mode is off. The caller specifies the duration of the |
a debugging console, but it can also be called by the C<trace.pl> script. |
2345 |
emergency in hours, the desired tracing destination, the trace level, |
The caller specifies the duration of the emergency in hours, the desired tracing |
2346 |
and a list of the trace modules to activate. For the length of the duration, when a |
destination, the trace level, and a list of the trace modules to activate. |
2347 |
program in an environment with the specified tracing key active invokes a Sprout |
For the length of the duration, when a program in an environment with the |
2348 |
CGI script, tracing will be turned on automatically. See L</TSetup> for more |
specified tracing key active invokes a Sprout CGI script, tracing will be |
2349 |
about tracing setup and L</ETracing> for more about emergency tracing. |
turned on automatically. See L</TSetup> for more about tracing setup and |
2350 |
|
L</ETracing> for more about emergency tracing. |
2351 |
|
|
2352 |
=over 4 |
=over 4 |
2353 |
|
|