log experiment stages to separate files
This commit is contained in:
@ -381,7 +381,11 @@ my %handlers = (
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
'20. Run Build in GDB' => sub {
|
'20. Open TablePlus (Mars)' => sub {
|
||||||
|
system('tableplus');
|
||||||
|
},
|
||||||
|
|
||||||
|
'21. Run Build in GDB' => sub {
|
||||||
my @builds = grep { /linux/ } Util::find_subdirs($local_builds_dir);
|
my @builds = grep { /linux/ } Util::find_subdirs($local_builds_dir);
|
||||||
my @selected_builds =
|
my @selected_builds =
|
||||||
TUI::select_from_list( "Select Build to Run in GDB", 0, @builds );
|
TUI::select_from_list( "Select Build to Run in GDB", 0, @builds );
|
||||||
|
|||||||
@ -35,151 +35,156 @@ my $result_browser = "$fail_bin/resultbrowser.py";
|
|||||||
sub trace {
|
sub trace {
|
||||||
my ($experiment) = @_;
|
my ($experiment) = @_;
|
||||||
|
|
||||||
Util::notify("Tracing $experiment...");
|
# Util::notify("Tracing $experiment...");
|
||||||
|
|
||||||
system(
|
my $trace_command = join " ", (
|
||||||
join " ",
|
"$bochs_runner",
|
||||||
(
|
"-V $fail_share/vgabios.bin",
|
||||||
"$bochs_runner",
|
"-b $fail_share/BIOS-bochs-latest",
|
||||||
"-V $fail_share/vgabios.bin",
|
"-1",
|
||||||
"-b $fail_share/BIOS-bochs-latest",
|
"-f $fail_trace",
|
||||||
"-1",
|
"-e $remote_builds_dir/$experiment/system.elf",
|
||||||
"-f $fail_trace",
|
"-i $remote_builds_dir/$experiment/system.iso",
|
||||||
"-e $remote_builds_dir/$experiment/system.elf",
|
"--",
|
||||||
"-i $remote_builds_dir/$experiment/system.iso",
|
"-Wf,--start-symbol=fail_start_trace",
|
||||||
"--",
|
"-Wf,--save-symbol=fail_start_trace",
|
||||||
"-Wf,--start-symbol=fail_start_trace",
|
"-Wf,--end-symbol=fail_stop_trace",
|
||||||
"-Wf,--save-symbol=fail_start_trace",
|
"-Wf,--state-file=$remote_builds_dir/$experiment/state",
|
||||||
"-Wf,--end-symbol=fail_stop_trace",
|
"-Wf,--trace-file=$remote_builds_dir/$experiment/trace.pb",
|
||||||
"-Wf,--state-file=$remote_builds_dir/$experiment/state",
|
"-Wf,--elf-file=$remote_builds_dir/$experiment/system.elf",
|
||||||
"-Wf,--trace-file=$remote_builds_dir/$experiment/trace.pb",
|
|
||||||
"-Wf,--elf-file=$remote_builds_dir/$experiment/system.elf"
|
|
||||||
|
|
||||||
# "-Wf,--full-trace",
|
# "-Wf,--full-trace",
|
||||||
# "-Wf,--check-bounds",
|
# "-Wf,--check-bounds",
|
||||||
)
|
">$remote_builds_dir/$experiment/1_trace.log"
|
||||||
);
|
);
|
||||||
|
say "Trace command: $trace_command";
|
||||||
|
|
||||||
|
system($trace_command);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub import_trace {
|
sub import_trace {
|
||||||
my ($experiment) = @_;
|
my ($experiment) = @_;
|
||||||
|
|
||||||
Util::notify("Importing $experiment trace...");
|
# Util::notify("Importing $experiment trace...");
|
||||||
|
|
||||||
# Benchmark: ip
|
# Benchmark: ip
|
||||||
system(
|
my $import_ip_command = join " ", (
|
||||||
join " ",
|
"$fail_import",
|
||||||
(
|
"--database-option-file $remote_db_conf",
|
||||||
"$fail_import",
|
"-t $remote_builds_dir/$experiment/trace.pb",
|
||||||
"--database-option-file $remote_db_conf",
|
"-i RegisterImporter",
|
||||||
"-t $remote_builds_dir/$experiment/trace.pb",
|
"-e $remote_builds_dir/$experiment/system.elf",
|
||||||
"-i RegisterImporter",
|
"-v $experiment",
|
||||||
"-e $remote_builds_dir/$experiment/system.elf",
|
"-b ip",
|
||||||
"-v $experiment",
|
"--no-gp", # Don't inject general purpose registers
|
||||||
"-b ip",
|
"--ip", # Inject instruction pointer
|
||||||
"--no-gp", # Don't inject general purpose registers
|
">$remote_builds_dir/$experiment/2_import_ip.log"
|
||||||
"--ip" # Inject instruction pointer
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
say "Import IP command: $import_ip_command";
|
||||||
|
|
||||||
|
system($import_ip_command);
|
||||||
|
|
||||||
# Benchmark: mem
|
# Benchmark: mem
|
||||||
system(
|
my $import_mem_command = join " ",
|
||||||
join " ",
|
(
|
||||||
(
|
"$fail_import",
|
||||||
"$fail_import",
|
"--database-option-file $remote_db_conf",
|
||||||
"--database-option-file $remote_db_conf",
|
"-t $remote_builds_dir/$experiment/trace.pb",
|
||||||
"-t $remote_builds_dir/$experiment/trace.pb",
|
"-i MemoryImporter",
|
||||||
"-i MemoryImporter",
|
"-e $remote_builds_dir/$experiment/system.elf",
|
||||||
"-e $remote_builds_dir/$experiment/system.elf",
|
"-v $experiment",
|
||||||
"-v $experiment",
|
"-b mem",
|
||||||
"-b mem"
|
">$remote_builds_dir/$experiment/2_import_mem.log"
|
||||||
)
|
);
|
||||||
);
|
say "Import MEM command: $import_mem_command";
|
||||||
|
|
||||||
|
system($import_mem_command);
|
||||||
|
|
||||||
# Benchmark: regs
|
# Benchmark: regs
|
||||||
system(
|
my $import_regs_command = join " ", (
|
||||||
join " ",
|
"$fail_import",
|
||||||
(
|
"--database-option-file $remote_db_conf",
|
||||||
"$fail_import",
|
"-t $remote_builds_dir/$experiment/trace.pb",
|
||||||
"--database-option-file $remote_db_conf",
|
"-i RegisterImporter",
|
||||||
"-t $remote_builds_dir/$experiment/trace.pb",
|
"-e $remote_builds_dir/$experiment/system.elf",
|
||||||
"-i RegisterImporter",
|
"-v $experiment",
|
||||||
"-e $remote_builds_dir/$experiment/system.elf",
|
"-b regs",
|
||||||
"-v $experiment",
|
"--flags", # Inject flags register
|
||||||
"-b regs",
|
">$remote_builds_dir/$experiment/2_import_regs.log"
|
||||||
"--flags" # Inject flags register
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
say "Import REGS command: $import_regs_command";
|
||||||
|
|
||||||
|
system($import_regs_command);
|
||||||
|
|
||||||
# Import fulltrace for VisualFAIL
|
# Import fulltrace for VisualFAIL
|
||||||
system(
|
# system(
|
||||||
join " ",
|
# join " ",
|
||||||
(
|
# (
|
||||||
"$fail_import",
|
# "$fail_import",
|
||||||
"--database-option-file $remote_db_conf",
|
# "--database-option-file $remote_db_conf",
|
||||||
"-t $remote_builds_dir/$experiment/trace.pb",
|
# "-t $remote_builds_dir/$experiment/trace.pb",
|
||||||
"-i FullTraceImporter",
|
# "-i FullTraceImporter",
|
||||||
"-e $remote_builds_dir/$experiment/system.elf",
|
# "-e $remote_builds_dir/$experiment/system.elf",
|
||||||
"-v $experiment",
|
# "-v $experiment",
|
||||||
)
|
# )
|
||||||
);
|
# );
|
||||||
|
|
||||||
# Import objdump disassembly + source files
|
# Import objdump disassembly + source files
|
||||||
system(
|
# system(
|
||||||
join " ",
|
# join " ",
|
||||||
(
|
# (
|
||||||
"$fail_import",
|
# "$fail_import",
|
||||||
"--database-option-file $remote_db_conf",
|
# "--database-option-file $remote_db_conf",
|
||||||
"-t $remote_builds_dir/$experiment/trace.pb",
|
# "-t $remote_builds_dir/$experiment/trace.pb",
|
||||||
"-i ElfImporter",
|
# "-i ElfImporter",
|
||||||
"-e $remote_builds_dir/$experiment/system.elf",
|
# "-e $remote_builds_dir/$experiment/system.elf",
|
||||||
"-v $experiment",
|
# "-v $experiment",
|
||||||
"-b ip",
|
# "-b ip",
|
||||||
"--objdump objdump",
|
# "--objdump objdump",
|
||||||
|
#
|
||||||
|
# # "--sources",
|
||||||
|
# )
|
||||||
|
# );
|
||||||
|
# system(
|
||||||
|
# join " ",
|
||||||
|
# (
|
||||||
|
# "$fail_import",
|
||||||
|
# "--database-option-file $remote_db_conf",
|
||||||
|
# "-t $remote_builds_dir/$experiment/trace.pb",
|
||||||
|
# "-i ElfImporter",
|
||||||
|
# "-e $remote_builds_dir/$experiment/system.elf",
|
||||||
|
# "-v $experiment",
|
||||||
|
# "-b mem",
|
||||||
|
# "--objdump objdump",
|
||||||
|
#
|
||||||
|
# # "--sources",
|
||||||
|
# )
|
||||||
|
# );
|
||||||
|
# system(
|
||||||
|
# join " ",
|
||||||
|
# (
|
||||||
|
# "$fail_import",
|
||||||
|
# "--database-option-file $remote_db_conf",
|
||||||
|
# "-t $remote_builds_dir/$experiment/trace.pb",
|
||||||
|
# "-i ElfImporter",
|
||||||
|
# "-e $remote_builds_dir/$experiment/system.elf",
|
||||||
|
# "-v $experiment",
|
||||||
|
# "-b regs",
|
||||||
|
# "--objdump objdump",
|
||||||
|
#
|
||||||
|
# # "--sources",
|
||||||
|
# )
|
||||||
|
# );
|
||||||
|
|
||||||
# "--sources",
|
my $prune_command = join " ",
|
||||||
)
|
(
|
||||||
);
|
"$fail_prune", "--database-option-file $remote_db_conf",
|
||||||
system(
|
"-v $experiment", "-b %%",
|
||||||
join " ",
|
"--overwrite", ">$remote_builds_dir/$experiment/2_prune.log"
|
||||||
(
|
);
|
||||||
"$fail_import",
|
say "Prune command: $prune_command";
|
||||||
"--database-option-file $remote_db_conf",
|
|
||||||
"-t $remote_builds_dir/$experiment/trace.pb",
|
|
||||||
"-i ElfImporter",
|
|
||||||
"-e $remote_builds_dir/$experiment/system.elf",
|
|
||||||
"-v $experiment",
|
|
||||||
"-b mem",
|
|
||||||
"--objdump objdump",
|
|
||||||
|
|
||||||
# "--sources",
|
system($prune_command);
|
||||||
)
|
|
||||||
);
|
|
||||||
system(
|
|
||||||
join " ",
|
|
||||||
(
|
|
||||||
"$fail_import",
|
|
||||||
"--database-option-file $remote_db_conf",
|
|
||||||
"-t $remote_builds_dir/$experiment/trace.pb",
|
|
||||||
"-i ElfImporter",
|
|
||||||
"-e $remote_builds_dir/$experiment/system.elf",
|
|
||||||
"-v $experiment",
|
|
||||||
"-b regs",
|
|
||||||
"--objdump objdump",
|
|
||||||
|
|
||||||
# "--sources",
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
system(
|
|
||||||
join " ",
|
|
||||||
(
|
|
||||||
"$fail_prune",
|
|
||||||
"--database-option-file $remote_db_conf",
|
|
||||||
"-v $experiment",
|
|
||||||
"-b %%", "--overwrite"
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub inject {
|
sub inject {
|
||||||
@ -195,7 +200,8 @@ sub inject {
|
|||||||
# "--port $fail_server_port",
|
# "--port $fail_server_port",
|
||||||
"--database-option-file $remote_db_conf", "-v $experiment",
|
"--database-option-file $remote_db_conf", "-v $experiment",
|
||||||
"-b %", "--inject-single-bit",
|
"-b %", "--inject-single-bit",
|
||||||
"--inject-registers", ">$remote_root/server.log"
|
"--inject-registers",
|
||||||
|
">$remote_builds_dir/$experiment/3_server.log"
|
||||||
);
|
);
|
||||||
say "Server command: $server_command";
|
say "Server command: $server_command";
|
||||||
|
|
||||||
@ -220,7 +226,7 @@ sub inject {
|
|||||||
"-Wf,--detected-marker=fail_marker_detected",
|
"-Wf,--detected-marker=fail_marker_detected",
|
||||||
|
|
||||||
# ">/dev/null"
|
# ">/dev/null"
|
||||||
">$remote_root/client.log"
|
">$remote_builds_dir/$experiment/4_client.log"
|
||||||
);
|
);
|
||||||
say "Client command: $client_command";
|
say "Client command: $client_command";
|
||||||
|
|
||||||
@ -263,10 +269,6 @@ sub results {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# system("rm $remote_root/runner.log");
|
|
||||||
system("rm $remote_root/server.log");
|
|
||||||
system("rm $remote_root/client.log");
|
|
||||||
|
|
||||||
# Run experiments
|
# Run experiments
|
||||||
my @experiments = Util::find_subdirs($remote_builds_dir);
|
my @experiments = Util::find_subdirs($remote_builds_dir);
|
||||||
for my $experiment (@experiments) {
|
for my $experiment (@experiments) {
|
||||||
@ -277,13 +279,6 @@ for my $experiment (@experiments) {
|
|||||||
import_trace($experiment);
|
import_trace($experiment);
|
||||||
inject($experiment);
|
inject($experiment);
|
||||||
results($experiment);
|
results($experiment);
|
||||||
|
|
||||||
# system(
|
|
||||||
# "mv $remote_root/runner.log $remote_builds_dir/$experiment/runner.log");
|
|
||||||
system(
|
|
||||||
"mv $remote_root/server.log $remote_builds_dir/$experiment/server.log");
|
|
||||||
system(
|
|
||||||
"mv $remote_root/client.log $remote_builds_dir/$experiment/client.log");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Util::notify("Finished all experiments");
|
Util::notify("Finished all experiments");
|
||||||
|
|||||||
Reference in New Issue
Block a user