2002-01-04 Michael Snyder * main.c (captured_main): Add new command line option "--pid". If the second command line argument (following the symbol-file) begins with a digit, try to attach to it before trying to open it as a corefile. (print_gdb_help): Document the "--pid" argument. 2002-01-05 Michael Snyder * gdb.texinfo (--pid): Document new command line option (attach). Index: main.c =================================================================== RCS file: /cvs/src/src/gdb/main.c,v retrieving revision 1.14 diff -c -3 -p -r1.14 main.c *** main.c 2001/11/22 00:23:12 1.14 --- main.c 2002/01/05 03:15:43 *************** captured_main (void *data) *** 239,244 **** --- 239,246 ---- {"e", required_argument, 0, 'e'}, {"core", required_argument, 0, 'c'}, {"c", required_argument, 0, 'c'}, + {"pid", required_argument, 0, 'p'}, + {"p", required_argument, 0, 'p'}, {"command", required_argument, 0, 'x'}, {"version", no_argument, &print_version, 1}, {"x", required_argument, 0, 'x'}, *************** captured_main (void *data) *** 320,325 **** --- 322,331 ---- case 'c': corearg = optarg; break; + case 'p': + /* "corearg" is shared by "--core" and "--pid" */ + corearg = optarg; + break; case 'x': cmdarg[ncmd++] = optarg; if (ncmd >= cmdsize) *************** extern int gdbtk_test (char *); *** 463,470 **** execarg = argv[optind]; break; case 2: ! /* FIXME: The documentation says this can be a ! "ProcID". as well. */ corearg = argv[optind]; break; case 3: --- 469,476 ---- execarg = argv[optind]; break; case 2: ! /* The documentation says this can be a "ProcID" as well. ! We will try it as both a corefile and a pid. */ corearg = argv[optind]; break; case 3: *************** extern int gdbtk_test (char *); *** 586,597 **** if (corearg != NULL) { ! if (catch_command_errors (core_file_command, corearg, !batch, RETURN_MASK_ALL) == 0) { ! /* See if the core file is really a PID. */ ! if (isdigit (corearg[0])) ! catch_command_errors (attach_command, corearg, !batch, RETURN_MASK_ALL); } } if (ttyarg != NULL) --- 592,611 ---- if (corearg != NULL) { ! /* corearg may be either a corefile or a pid. ! If its first character is a digit, try attach first ! and then corefile. Otherwise try corefile first. */ ! ! if (isdigit (corearg[0])) { ! if (catch_command_errors (attach_command, corearg, ! !batch, RETURN_MASK_ALL) == 0) ! catch_command_errors (core_file_command, corearg, ! !batch, RETURN_MASK_ALL); } + else /* Can't be a pid, better be a corefile. */ + catch_command_errors (core_file_command, corearg, + !batch, RETURN_MASK_ALL); } if (ttyarg != NULL) *************** extern int gdbtk_test (char *); *** 616,621 **** --- 630,646 ---- catch_command_errors (source_command, gdbinit, 0, RETURN_MASK_ALL); } + /* These need to be set this late in the initialization to ensure that + they are defined for the current environment. They define the + radix variables needed by a save-breakpoints file to preserve the + radix across the breakpoints restoration assuming they are restored + using the -x (-command) command line options. */ + + set_internalvar (lookup_internalvar ("input_radix"), + value_from_longest (builtin_type_int, (LONGEST) input_radix)); + set_internalvar (lookup_internalvar ("output_radix"), + value_from_longest (builtin_type_int, (LONGEST) output_radix)); + for (i = 0; i < ncmd; i++) { #if 0 *************** Options:\n\n\ *** 752,757 **** --- 777,783 ---- --cd=DIR Change current directory to DIR.\n\ --command=FILE Execute GDB commands from FILE.\n\ --core=COREFILE Analyze the core dump COREFILE.\n\ + --pid=PID Attach to running process PID.\n\ ", stream); fputs_unfiltered ("\ --dbx DBX compatibility mode.\n\ Index: doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.68 diff -c -3 -p -r1.68 gdb.texinfo *** gdb.texinfo 2002/01/07 09:28:43 1.68 --- gdb.texinfo 2002/01/10 23:01:46 *************** in sequential order. The order makes a *** 891,901 **** When @value{GDBN} starts, it reads any arguments other than options as specifying an executable file and core file (or process ID). This is the same as if the arguments were specified by the @samp{-se} and ! @samp{-c} options respectively. (@value{GDBN} reads the first argument ! that does not have an associated option flag as equivalent to the ! @samp{-se} option followed by that argument; and the second argument ! that does not have an associated option flag, if any, as equivalent to ! the @samp{-c} option followed by that argument.) If @value{GDBN} has not been configured to included core file support, such as for most embedded targets, then it will complain about a second --- 891,906 ---- When @value{GDBN} starts, it reads any arguments other than options as specifying an executable file and core file (or process ID). This is the same as if the arguments were specified by the @samp{-se} and ! @samp{-c} (or @samp{-p} options respectively. (@value{GDBN} reads the ! first argument that does not have an associated option flag as ! equivalent to the @samp{-se} option followed by that argument; and the ! second argument that does not have an associated option flag, if any, as ! equivalent to the @samp{-c}/@samp{-p} option followed by that argument.) ! If the second argument begins with a decimal digit, @value{GDBN} will ! first attempt to attach to it as a process, and if that fails, attempt ! to open it as a corefile. If you have a corefile whose name begins with ! a digit, you can prevent @value{GDBN} from treating it as a pid by ! prefixing it with @samp{"./"}, eg. @samp{"./12345"}. If @value{GDBN} has not been configured to included core file support, such as for most embedded targets, then it will complain about a second *************** file. *** 934,945 **** @itemx -c @var{file} @cindex @code{--core} @cindex @code{-c} ! Use file @var{file} as a core dump to examine. @item -c @var{number} ! Connect to process ID @var{number}, as with the @code{attach} command ! (unless there is a file in core-dump format named @var{number}, in which ! case @samp{-c} specifies that file as a core dump to read). @item -command @var{file} @itemx -x @var{file} --- 939,954 ---- @itemx -c @var{file} @cindex @code{--core} @cindex @code{-c} ! Use file @var{file} as a core dump to examine. @item -c @var{number} ! @item -pid @var{number} ! @itemx -p @var{number} ! @cindex @code{--pid} ! @cindex @code{-p} ! Connect to process ID @var{number}, as with the @code{attach} command. ! If there is no such process, @value{GDBN} will attempt to open a core ! file named @var{number}. @item -command @var{file} @itemx -x @var{file}