Add --gdbbt option
This commit is contained in:
parent
546e7c0c1f
commit
b883ce95b2
|
|
@ -45,6 +45,7 @@ autoflush STDERR 1;
|
||||||
|
|
||||||
$Debug = 0;
|
$Debug = 0;
|
||||||
my $opt_gdb;
|
my $opt_gdb;
|
||||||
|
my $opt_gdbbt;
|
||||||
|
|
||||||
# No arguments can't do anything useful. Give help
|
# No arguments can't do anything useful. Give help
|
||||||
if ($#ARGV < 0) {
|
if ($#ARGV < 0) {
|
||||||
|
|
@ -66,20 +67,29 @@ if (! GetOptions (
|
||||||
# "version!" => \&version, # Also passthru'ed
|
# "version!" => \&version, # Also passthru'ed
|
||||||
# Switches
|
# Switches
|
||||||
"gdb=s" => \$opt_gdb, # Undocumented debugging
|
"gdb=s" => \$opt_gdb, # Undocumented debugging
|
||||||
|
"gdbbt!" => \$opt_gdbbt, # Undocumented debugging
|
||||||
# Additional parameters
|
# Additional parameters
|
||||||
"<>" => sub {}, # Ignored
|
"<>" => sub {}, # Ignored
|
||||||
)) {
|
)) {
|
||||||
pod2usage(-exitstatus=>2, -verbose=>0);
|
pod2usage(-exitstatus=>2, -verbose=>0);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Determine runtime flags
|
# Determine runtime flags and run
|
||||||
my $vcmd =(($opt_gdb?"$opt_gdb ":"")
|
if ($opt_gdbbt && !$opt_gdb && $Debug) {
|
||||||
.verilator_bin()
|
# Run under GDB to get gdbbt
|
||||||
." ".join(' ',@Opt_Verilator_Sw)
|
run ("gdb ".verilator_bin()
|
||||||
);
|
." --batch --quiet"
|
||||||
|
." -ex 'run ".join(' ',@Opt_Verilator_Sw)."'"
|
||||||
# Run verilator
|
." -ex 'set width 0'"
|
||||||
run ($vcmd);
|
." -ex 'bt'"
|
||||||
|
." -ex 'c'");
|
||||||
|
die "%Error: --gdbbt looses the exit status; so must assume run went badly...";
|
||||||
|
} else {
|
||||||
|
# Normal, non gdb
|
||||||
|
run (($opt_gdb?"$opt_gdb ":"")
|
||||||
|
.verilator_bin()
|
||||||
|
." ".join(' ',@Opt_Verilator_Sw));
|
||||||
|
}
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -2638,6 +2648,8 @@ License Version 2.0.
|
||||||
|
|
||||||
=head1 AUTHORS
|
=head1 AUTHORS
|
||||||
|
|
||||||
|
When possible, please instead report bugs to L<http://www.veripool.org/>.
|
||||||
|
|
||||||
Wilson Snyder <wsnyder@wsnyder.org>
|
Wilson Snyder <wsnyder@wsnyder.org>
|
||||||
|
|
||||||
Major concepts by Paul Wasson and Duane Galbi.
|
Major concepts by Paul Wasson and Duane Galbi.
|
||||||
|
|
|
||||||
|
|
@ -769,6 +769,9 @@ void V3Options::parseOptsList(FileLine* fl, int argc, char** argv) {
|
||||||
else if ( !strcmp (sw, "-gdb") && (i+1)<argc ) {
|
else if ( !strcmp (sw, "-gdb") && (i+1)<argc ) {
|
||||||
shift; // Used only in perl shell
|
shift; // Used only in perl shell
|
||||||
}
|
}
|
||||||
|
else if ( !strcmp (sw, "-gdbbt")) {
|
||||||
|
// Used only in perl shell
|
||||||
|
}
|
||||||
else if ( !strcmp (sw, "-mod-prefix") && (i+1)<argc ) {
|
else if ( !strcmp (sw, "-mod-prefix") && (i+1)<argc ) {
|
||||||
shift; m_modPrefix = argv[i];
|
shift; m_modPrefix = argv[i];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,7 @@ $Debug = 0;
|
||||||
my $opt_benchmark;
|
my $opt_benchmark;
|
||||||
my @opt_tests;
|
my @opt_tests;
|
||||||
my $opt_gdb;
|
my $opt_gdb;
|
||||||
|
my $opt_gdbbt;
|
||||||
my $opt_iv;
|
my $opt_iv;
|
||||||
my $opt_jobs = 1;
|
my $opt_jobs = 1;
|
||||||
my $opt_nc;
|
my $opt_nc;
|
||||||
|
|
@ -60,6 +61,7 @@ if (! GetOptions (
|
||||||
"benchmark:i" => sub { $opt_benchmark = $_[1] ? $_[1] : 1; },
|
"benchmark:i" => sub { $opt_benchmark = $_[1] ? $_[1] : 1; },
|
||||||
"debug" => \&debug,
|
"debug" => \&debug,
|
||||||
"gdb!" => \$opt_gdb,
|
"gdb!" => \$opt_gdb,
|
||||||
|
"gdbbt!" => \$opt_gdbbt,
|
||||||
"help" => \&usage,
|
"help" => \&usage,
|
||||||
"iverilog!" => \$opt_iv,
|
"iverilog!" => \$opt_iv,
|
||||||
"j=i" => \$opt_jobs,
|
"j=i" => \$opt_jobs,
|
||||||
|
|
@ -417,6 +419,7 @@ sub compile {
|
||||||
$opt_gdb="gdbrun" if defined $opt_gdb;
|
$opt_gdb="gdbrun" if defined $opt_gdb;
|
||||||
my @verilator_flags = @{$param{verilator_flags}};
|
my @verilator_flags = @{$param{verilator_flags}};
|
||||||
unshift @verilator_flags, "--gdb $opt_gdb" if $opt_gdb;
|
unshift @verilator_flags, "--gdb $opt_gdb" if $opt_gdb;
|
||||||
|
unshift @verilator_flags, "--gdbbt" if $opt_gdbbt;
|
||||||
unshift @verilator_flags, @Opt_Driver_Verilator_Flags;
|
unshift @verilator_flags, @Opt_Driver_Verilator_Flags;
|
||||||
unshift @verilator_flags, "--x-assign unique"; # More likely to be buggy
|
unshift @verilator_flags, "--x-assign unique"; # More likely to be buggy
|
||||||
unshift @verilator_flags, "--trace" if $opt_trace;
|
unshift @verilator_flags, "--trace" if $opt_trace;
|
||||||
|
|
@ -1106,6 +1109,11 @@ specifies the number of simulation cycles (for tests that support it).
|
||||||
|
|
||||||
Run verilator under the debugger.
|
Run verilator under the debugger.
|
||||||
|
|
||||||
|
=item --gdbbt
|
||||||
|
|
||||||
|
Run verilator under the debugger, only to print backtrace information.
|
||||||
|
Requires --debug.
|
||||||
|
|
||||||
=item --help
|
=item --help
|
||||||
|
|
||||||
Displays this message and program version and exits.
|
Displays this message and program version and exits.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue