mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug #11760361 52764: EXTEND MYSQL-TEST-RUN SUPPORT FOR SUN STUDIO DBX BY ADDING --DBX DEBUGGER
Added necessary options and variables Added dbx_arguments() similar to gdb_arguments() Unlike gdb, cannot use init file but must provide commands and args as command line argument to dbx Also simplified debugger behavior to always start with a breakpoint in main()
This commit is contained in:
@ -219,9 +219,12 @@ our %gprof_dirs;
|
|||||||
our $glob_debugger= 0;
|
our $glob_debugger= 0;
|
||||||
our $opt_gdb;
|
our $opt_gdb;
|
||||||
our $opt_client_gdb;
|
our $opt_client_gdb;
|
||||||
|
our $opt_dbx;
|
||||||
|
our $opt_client_dbx;
|
||||||
our $opt_ddd;
|
our $opt_ddd;
|
||||||
our $opt_client_ddd;
|
our $opt_client_ddd;
|
||||||
our $opt_manual_gdb;
|
our $opt_manual_gdb;
|
||||||
|
our $opt_manual_dbx;
|
||||||
our $opt_manual_ddd;
|
our $opt_manual_ddd;
|
||||||
our $opt_manual_debug;
|
our $opt_manual_debug;
|
||||||
our $opt_debugger;
|
our $opt_debugger;
|
||||||
@ -1001,6 +1004,9 @@ sub command_line_setup {
|
|||||||
'ddd' => \$opt_ddd,
|
'ddd' => \$opt_ddd,
|
||||||
'client-ddd' => \$opt_client_ddd,
|
'client-ddd' => \$opt_client_ddd,
|
||||||
'manual-ddd' => \$opt_manual_ddd,
|
'manual-ddd' => \$opt_manual_ddd,
|
||||||
|
'dbx' => \$opt_dbx,
|
||||||
|
'client-dbx' => \$opt_client_dbx,
|
||||||
|
'manual-dbx' => \$opt_manual_dbx,
|
||||||
'debugger=s' => \$opt_debugger,
|
'debugger=s' => \$opt_debugger,
|
||||||
'client-debugger=s' => \$opt_client_debugger,
|
'client-debugger=s' => \$opt_client_debugger,
|
||||||
'strace-client:s' => \$opt_strace_client,
|
'strace-client:s' => \$opt_strace_client,
|
||||||
@ -1426,6 +1432,12 @@ sub command_line_setup {
|
|||||||
$opt_ddd= undef;
|
$opt_ddd= undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($opt_dbx) {
|
||||||
|
mtr_warning("Silently converting --dbx to --client-dbx in embedded mode");
|
||||||
|
$opt_client_dbx= $opt_dbx;
|
||||||
|
$opt_dbx= undef;
|
||||||
|
}
|
||||||
|
|
||||||
if ($opt_debugger)
|
if ($opt_debugger)
|
||||||
{
|
{
|
||||||
mtr_warning("Silently converting --debugger to --client-debugger in embedded mode");
|
mtr_warning("Silently converting --debugger to --client-debugger in embedded mode");
|
||||||
@ -1434,7 +1446,7 @@ sub command_line_setup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( $opt_gdb || $opt_ddd || $opt_manual_gdb || $opt_manual_ddd ||
|
if ( $opt_gdb || $opt_ddd || $opt_manual_gdb || $opt_manual_ddd ||
|
||||||
$opt_manual_debug || $opt_debugger )
|
$opt_manual_debug || $opt_debugger || $opt_dbx || $opt_manual_dbx)
|
||||||
{
|
{
|
||||||
mtr_error("You need to use the client debug options for the",
|
mtr_error("You need to use the client debug options for the",
|
||||||
"embedded server. Ex: --client-gdb");
|
"embedded server. Ex: --client-gdb");
|
||||||
@ -1462,6 +1474,7 @@ sub command_line_setup {
|
|||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd ||
|
if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd ||
|
||||||
$opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug ||
|
$opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug ||
|
||||||
|
$opt_dbx || $opt_client_dbx || $opt_manual_dbx ||
|
||||||
$opt_debugger || $opt_client_debugger )
|
$opt_debugger || $opt_client_debugger )
|
||||||
{
|
{
|
||||||
# Indicate that we are using debugger
|
# Indicate that we are using debugger
|
||||||
@ -4704,6 +4717,9 @@ sub mysqld_start ($$) {
|
|||||||
{
|
{
|
||||||
ddd_arguments(\$args, \$exe, $mysqld->name());
|
ddd_arguments(\$args, \$exe, $mysqld->name());
|
||||||
}
|
}
|
||||||
|
if ( $opt_dbx || $opt_manual_dbx ) {
|
||||||
|
dbx_arguments(\$args, \$exe, $mysqld->name());
|
||||||
|
}
|
||||||
elsif ( $opt_debugger )
|
elsif ( $opt_debugger )
|
||||||
{
|
{
|
||||||
debugger_arguments(\$args, \$exe, $mysqld->name());
|
debugger_arguments(\$args, \$exe, $mysqld->name());
|
||||||
@ -5374,6 +5390,9 @@ sub start_mysqltest ($) {
|
|||||||
{
|
{
|
||||||
ddd_arguments(\$args, \$exe, "client");
|
ddd_arguments(\$args, \$exe, "client");
|
||||||
}
|
}
|
||||||
|
if ( $opt_client_dbx ) {
|
||||||
|
dbx_arguments(\$args, \$exe, "client");
|
||||||
|
}
|
||||||
elsif ( $opt_client_debugger )
|
elsif ( $opt_client_debugger )
|
||||||
{
|
{
|
||||||
debugger_arguments(\$args, \$exe, "client");
|
debugger_arguments(\$args, \$exe, "client");
|
||||||
@ -5408,23 +5427,11 @@ sub gdb_arguments {
|
|||||||
# Remove the old gdbinit file
|
# Remove the old gdbinit file
|
||||||
unlink($gdb_init_file);
|
unlink($gdb_init_file);
|
||||||
|
|
||||||
if ( $type eq "client" )
|
# write init file for mysqld or client
|
||||||
{
|
mtr_tofile($gdb_init_file,
|
||||||
# write init file for client
|
"set args $str\n" .
|
||||||
mtr_tofile($gdb_init_file,
|
"break main\n" .
|
||||||
"set args $str\n" .
|
"run");
|
||||||
"break main\n");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
# write init file for mysqld
|
|
||||||
mtr_tofile($gdb_init_file,
|
|
||||||
"set args $str\n" .
|
|
||||||
"break mysql_parse\n" .
|
|
||||||
"commands 1\n" .
|
|
||||||
"disable 1\n" .
|
|
||||||
"end\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $opt_manual_gdb )
|
if ( $opt_manual_gdb )
|
||||||
{
|
{
|
||||||
@ -5471,24 +5478,12 @@ sub ddd_arguments {
|
|||||||
# Remove the old gdbinit file
|
# Remove the old gdbinit file
|
||||||
unlink($gdb_init_file);
|
unlink($gdb_init_file);
|
||||||
|
|
||||||
if ( $type eq "client" )
|
# write init file for mysqld or client
|
||||||
{
|
mtr_tofile($gdb_init_file,
|
||||||
# write init file for client
|
"file $$exe\n" .
|
||||||
mtr_tofile($gdb_init_file,
|
"set args $str\n" .
|
||||||
"set args $str\n" .
|
"break main\n" .
|
||||||
"break main\n");
|
"run");
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
# write init file for mysqld
|
|
||||||
mtr_tofile($gdb_init_file,
|
|
||||||
"file $$exe\n" .
|
|
||||||
"set args $str\n" .
|
|
||||||
"break mysql_parse\n" .
|
|
||||||
"commands 1\n" .
|
|
||||||
"disable 1\n" .
|
|
||||||
"end");
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $opt_manual_ddd )
|
if ( $opt_manual_ddd )
|
||||||
{
|
{
|
||||||
@ -5517,6 +5512,46 @@ sub ddd_arguments {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Modify the exe and args so that program is run in dbx in xterm
|
||||||
|
#
|
||||||
|
sub dbx_arguments {
|
||||||
|
my $args= shift;
|
||||||
|
my $exe= shift;
|
||||||
|
my $type= shift;
|
||||||
|
|
||||||
|
# Put $args into a single string
|
||||||
|
my $str= join " ", @$$args;
|
||||||
|
|
||||||
|
if ( $opt_manual_dbx ) {
|
||||||
|
print "\nTo start dbx for $type, type in another window:\n";
|
||||||
|
print "cd $glob_mysql_test_dir; dbx -c \"stop in main; " .
|
||||||
|
"run $str\" $$exe\n";
|
||||||
|
|
||||||
|
# Indicate the exe should not be started
|
||||||
|
$$exe= undef;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$$args= [];
|
||||||
|
mtr_add_arg($$args, "-title");
|
||||||
|
mtr_add_arg($$args, "$type");
|
||||||
|
mtr_add_arg($$args, "-e");
|
||||||
|
|
||||||
|
if ( $exe_libtool ) {
|
||||||
|
mtr_add_arg($$args, $exe_libtool);
|
||||||
|
mtr_add_arg($$args, "--mode=execute");
|
||||||
|
}
|
||||||
|
|
||||||
|
mtr_add_arg($$args, "dbx");
|
||||||
|
mtr_add_arg($$args, "-c");
|
||||||
|
mtr_add_arg($$args, "stop in main; run $str");
|
||||||
|
mtr_add_arg($$args, "$$exe");
|
||||||
|
|
||||||
|
$$exe= "xterm";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Modify the exe and args so that program is run in the selected debugger
|
# Modify the exe and args so that program is run in the selected debugger
|
||||||
#
|
#
|
||||||
@ -5547,18 +5582,6 @@ sub debugger_arguments {
|
|||||||
# Set exe to debuggername
|
# Set exe to debuggername
|
||||||
$$exe= $debugger;
|
$$exe= $debugger;
|
||||||
|
|
||||||
}
|
|
||||||
elsif ( $debugger eq "dbx" )
|
|
||||||
{
|
|
||||||
# xterm -e dbx -r exe arg1 .. argn
|
|
||||||
|
|
||||||
unshift(@$$args, $$exe);
|
|
||||||
unshift(@$$args, "-r");
|
|
||||||
unshift(@$$args, $debugger);
|
|
||||||
unshift(@$$args, "-e");
|
|
||||||
|
|
||||||
$$exe= "xterm";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -5860,6 +5883,7 @@ Options for debugging the product
|
|||||||
client-ddd Start mysqltest client in ddd
|
client-ddd Start mysqltest client in ddd
|
||||||
client-debugger=NAME Start mysqltest in the selected debugger
|
client-debugger=NAME Start mysqltest in the selected debugger
|
||||||
client-gdb Start mysqltest client in gdb
|
client-gdb Start mysqltest client in gdb
|
||||||
|
client-dbx Start mysqltest client in dbx
|
||||||
ddd Start mysqld in ddd
|
ddd Start mysqld in ddd
|
||||||
debug Dump trace output for all servers and client programs
|
debug Dump trace output for all servers and client programs
|
||||||
debug-common Same as debug, but sets 'd' debug flags to
|
debug-common Same as debug, but sets 'd' debug flags to
|
||||||
@ -5868,12 +5892,15 @@ Options for debugging the product
|
|||||||
tracing
|
tracing
|
||||||
debugger=NAME Start mysqld in the selected debugger
|
debugger=NAME Start mysqld in the selected debugger
|
||||||
gdb Start the mysqld(s) in gdb
|
gdb Start the mysqld(s) in gdb
|
||||||
|
dbx Start the mysqld(s) in dbx
|
||||||
manual-debug Let user manually start mysqld in debugger, before
|
manual-debug Let user manually start mysqld in debugger, before
|
||||||
running test(s)
|
running test(s)
|
||||||
manual-gdb Let user manually start mysqld in gdb, before running
|
manual-gdb Let user manually start mysqld in gdb, before running
|
||||||
test(s)
|
test(s)
|
||||||
manual-ddd Let user manually start mysqld in ddd, before running
|
manual-ddd Let user manually start mysqld in ddd, before running
|
||||||
test(s)
|
test(s)
|
||||||
|
manual-dbx Let user manually start mysqld in dbx, before running
|
||||||
|
test(s)
|
||||||
strace-client[=path] Create strace output for mysqltest client, optionally
|
strace-client[=path] Create strace output for mysqltest client, optionally
|
||||||
specifying name and path to the trace program to use.
|
specifying name and path to the trace program to use.
|
||||||
Example: $0 --strace-client=ktrace
|
Example: $0 --strace-client=ktrace
|
||||||
|
Reference in New Issue
Block a user