mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01: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:
parent
96a7bbb36e
commit
cda1dc52c2
1 changed files with 75 additions and 48 deletions
|
@ -219,9 +219,12 @@ our %gprof_dirs;
|
|||
our $glob_debugger= 0;
|
||||
our $opt_gdb;
|
||||
our $opt_client_gdb;
|
||||
our $opt_dbx;
|
||||
our $opt_client_dbx;
|
||||
our $opt_ddd;
|
||||
our $opt_client_ddd;
|
||||
our $opt_manual_gdb;
|
||||
our $opt_manual_dbx;
|
||||
our $opt_manual_ddd;
|
||||
our $opt_manual_debug;
|
||||
our $opt_debugger;
|
||||
|
@ -1001,6 +1004,9 @@ sub command_line_setup {
|
|||
'ddd' => \$opt_ddd,
|
||||
'client-ddd' => \$opt_client_ddd,
|
||||
'manual-ddd' => \$opt_manual_ddd,
|
||||
'dbx' => \$opt_dbx,
|
||||
'client-dbx' => \$opt_client_dbx,
|
||||
'manual-dbx' => \$opt_manual_dbx,
|
||||
'debugger=s' => \$opt_debugger,
|
||||
'client-debugger=s' => \$opt_client_debugger,
|
||||
'strace-client:s' => \$opt_strace_client,
|
||||
|
@ -1426,6 +1432,12 @@ sub command_line_setup {
|
|||
$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)
|
||||
{
|
||||
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 ||
|
||||
$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",
|
||||
"embedded server. Ex: --client-gdb");
|
||||
|
@ -1462,6 +1474,7 @@ sub command_line_setup {
|
|||
# --------------------------------------------------------------------------
|
||||
if ( $opt_gdb || $opt_client_gdb || $opt_ddd || $opt_client_ddd ||
|
||||
$opt_manual_gdb || $opt_manual_ddd || $opt_manual_debug ||
|
||||
$opt_dbx || $opt_client_dbx || $opt_manual_dbx ||
|
||||
$opt_debugger || $opt_client_debugger )
|
||||
{
|
||||
# Indicate that we are using debugger
|
||||
|
@ -4704,6 +4717,9 @@ sub mysqld_start ($$) {
|
|||
{
|
||||
ddd_arguments(\$args, \$exe, $mysqld->name());
|
||||
}
|
||||
if ( $opt_dbx || $opt_manual_dbx ) {
|
||||
dbx_arguments(\$args, \$exe, $mysqld->name());
|
||||
}
|
||||
elsif ( $opt_debugger )
|
||||
{
|
||||
debugger_arguments(\$args, \$exe, $mysqld->name());
|
||||
|
@ -5374,6 +5390,9 @@ sub start_mysqltest ($) {
|
|||
{
|
||||
ddd_arguments(\$args, \$exe, "client");
|
||||
}
|
||||
if ( $opt_client_dbx ) {
|
||||
dbx_arguments(\$args, \$exe, "client");
|
||||
}
|
||||
elsif ( $opt_client_debugger )
|
||||
{
|
||||
debugger_arguments(\$args, \$exe, "client");
|
||||
|
@ -5408,23 +5427,11 @@ sub gdb_arguments {
|
|||
# Remove the old gdbinit file
|
||||
unlink($gdb_init_file);
|
||||
|
||||
if ( $type eq "client" )
|
||||
{
|
||||
# write init file for client
|
||||
mtr_tofile($gdb_init_file,
|
||||
"set args $str\n" .
|
||||
"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");
|
||||
}
|
||||
# write init file for mysqld or client
|
||||
mtr_tofile($gdb_init_file,
|
||||
"set args $str\n" .
|
||||
"break main\n" .
|
||||
"run");
|
||||
|
||||
if ( $opt_manual_gdb )
|
||||
{
|
||||
|
@ -5471,24 +5478,12 @@ sub ddd_arguments {
|
|||
# Remove the old gdbinit file
|
||||
unlink($gdb_init_file);
|
||||
|
||||
if ( $type eq "client" )
|
||||
{
|
||||
# write init file for client
|
||||
mtr_tofile($gdb_init_file,
|
||||
"set args $str\n" .
|
||||
"break main\n");
|
||||
}
|
||||
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");
|
||||
}
|
||||
# write init file for mysqld or client
|
||||
mtr_tofile($gdb_init_file,
|
||||
"file $$exe\n" .
|
||||
"set args $str\n" .
|
||||
"break main\n" .
|
||||
"run");
|
||||
|
||||
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
|
||||
#
|
||||
|
@ -5547,18 +5582,6 @@ sub debugger_arguments {
|
|||
# Set exe to debuggername
|
||||
$$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
|
||||
{
|
||||
|
@ -5860,6 +5883,7 @@ Options for debugging the product
|
|||
client-ddd Start mysqltest client in ddd
|
||||
client-debugger=NAME Start mysqltest in the selected debugger
|
||||
client-gdb Start mysqltest client in gdb
|
||||
client-dbx Start mysqltest client in dbx
|
||||
ddd Start mysqld in ddd
|
||||
debug Dump trace output for all servers and client programs
|
||||
debug-common Same as debug, but sets 'd' debug flags to
|
||||
|
@ -5868,12 +5892,15 @@ Options for debugging the product
|
|||
tracing
|
||||
debugger=NAME Start mysqld in the selected debugger
|
||||
gdb Start the mysqld(s) in gdb
|
||||
dbx Start the mysqld(s) in dbx
|
||||
manual-debug Let user manually start mysqld in debugger, before
|
||||
running test(s)
|
||||
manual-gdb Let user manually start mysqld in gdb, before running
|
||||
test(s)
|
||||
manual-ddd Let user manually start mysqld in ddd, before running
|
||||
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
|
||||
specifying name and path to the trace program to use.
|
||||
Example: $0 --strace-client=ktrace
|
||||
|
|
Loading…
Add table
Reference in a new issue