Map result codes to labels without ending the process.

status-labels Command-line tools often report success or a category of failure. In a trace, labels teach the same idea without ending the run.

Status Labels

code
exit_status_labels.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;

my $code = 0;
my $label = "unknown";

if ($code == 0) {
    $label = "success";
} elsif ($code == 1) {
    $label = "usage-error";
} else {
    $label = "data-error";
}

print "code=$code\n";
print "label=$label\n";
use strict;
use warnings;

my $code = 1;
my $label = "unknown";

if ($code == 0) {
    $label = "success";
} elsif ($code == 1) {
    $label = "usage-error";
} else {
    $label = "data-error";
}

print "code=$code\n";
print "label=$label\n";
use strict;
use warnings;

my $code = 2;
my $label = "unknown";

if ($code == 0) {
    $label = "success";
} elsif ($code == 1) {
    $label = "usage-error";
} else {
    $label = "data-error";
}

print "code=$code\n";
print "label=$label\n";
  1. $code ← 0, $label ← unknown

    4my $code→ 0 = 0; #@code=1, 25my $label→ unknown = "unknown";
  2. $label ← success

    7if ($code0 == 0) {8    $label→ success = "success";9} elsif ($code == 1) {
  3. print "code=$code ";

    15print "code=$code0\n";16print "label=$labelsuccess\n";
    outputcode=0
    label=success
  1. $code ← 1, $label ← unknown

    4my $code→ 1 = 1;5my $label→ unknown = "unknown";
  2. $label ← usage-error

    8    $label = "success";9} elsif ($code1 == 1) {10    $label→ usage-error = "usage-error";11} else {
  3. print "code=$code ";

    15print "code=$code1\n";16print "label=$labelusage-error\n";
    outputcode=1
    label=usage-error
  1. $code ← 2, $label ← unknown

    4my $code→ 2 = 2;5my $label→ unknown = "unknown";
  2. $label ← data-error

    10    $label = "usage-error";11} else {12    $label→ data-error = "data-error";13}
  3. print "code=$code ";

    15print "code=$code2\n";16print "label=$labeldata-error\n";
    outputcode=2
    label=data-error