1 /* Print and select stack frames for GDB, the GNU debugger.
2 Copyright 1986, 1987, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
4 This file is part of GDB.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
24 #include "expression.h"
30 #include "breakpoint.h"
35 return_command PARAMS ((char *, int));
38 down_command PARAMS ((char *, int));
41 down_silently_command PARAMS ((char *, int));
44 up_command PARAMS ((char *, int));
47 up_silently_command PARAMS ((char *, int));
50 frame_command PARAMS ((char *, int));
53 select_frame_command PARAMS ((char *, int));
56 args_info PARAMS ((char *, int));
59 print_frame_arg_vars PARAMS ((FRAME, GDB_FILE *));
62 catch_info PARAMS ((char *, int));
65 locals_info PARAMS ((char *, int));
68 print_frame_label_vars PARAMS ((FRAME, int, GDB_FILE *));
71 print_frame_local_vars PARAMS ((FRAME, GDB_FILE *));
74 print_block_frame_labels PARAMS ((struct block *, int *, GDB_FILE *));
77 print_block_frame_locals PARAMS ((struct block *, FRAME, GDB_FILE *));
80 backtrace_command PARAMS ((char *, int));
83 parse_frame_specification PARAMS ((char *));
86 frame_info PARAMS ((char *, int));
89 extern int addressprint; /* Print addresses, or stay symbolic only? */
90 extern int info_verbose; /* Verbosity of symbol reading msgs */
91 extern int lines_to_list; /* # of lines "list" command shows by default */
93 /* The "selected" stack frame is used by default for local and arg access.
94 May be zero, for no selected frame. */
98 /* Level of the selected frame:
99 0 for innermost, 1 for its caller, ...
100 or -1 for frame specified by address with no defined level. */
102 int selected_frame_level;
104 /* Nonzero means print the full filename and linenumber
105 when a frame is printed, and do so in a format programs can parse. */
107 int frame_file_full_name = 0;
110 struct print_stack_frame_args {
111 struct frame_info *fi;
117 static int print_stack_frame_stub PARAMS ((char *));
119 /* Pass the args the way catch_errors wants them. */
121 print_stack_frame_stub (args)
124 struct print_stack_frame_args *p = (struct print_stack_frame_args *)args;
125 print_frame_info (p->fi, p->level, p->source, p->args);
129 /* Print a stack frame briefly. FRAME should be the frame id
130 and LEVEL should be its level in the stack (or -1 for level not defined).
131 This prints the level, the function executing, the arguments,
132 and the file name and line number.
133 If the pc is not at the beginning of the source line,
134 the actual pc is printed at the beginning.
136 If SOURCE is 1, print the source line as well.
137 If SOURCE is -1, print ONLY the source line. */
140 print_stack_frame (frame, level, source)
145 struct print_stack_frame_args args;
147 args.fi = get_frame_info (frame);
149 args.source = source;
152 catch_errors (print_stack_frame_stub, (char *)&args, "", RETURN_MASK_ERROR);
155 struct print_args_args {
157 struct frame_info *fi;
160 static int print_args_stub PARAMS ((char *));
162 /* Pass the args the way catch_errors wants them. */
164 print_args_stub (args)
168 struct print_args_args *p = (struct print_args_args *)args;
169 FRAME_NUM_ARGS (numargs, (p->fi));
170 print_frame_args (p->func, p->fi, numargs, gdb_stdout);
175 print_frame_info (fi, level, source, args)
176 struct frame_info *fi;
181 struct symtab_and_line sal;
183 register char *funname = 0;
184 enum language funlang = language_unknown;
185 char buf[MAX_REGISTER_RAW_SIZE];
189 /* On the 68k, this spends too much time in m68k_find_saved_regs. */
191 /* Get the value of SP_REGNUM relative to the frame. */
192 get_saved_register (buf, (int *)NULL, (CORE_ADDR *)NULL,
193 FRAME_INFO_ID (fi), SP_REGNUM, (enum lval_type *)NULL);
194 sp = extract_address (buf, REGISTER_RAW_SIZE (SP_REGNUM));
196 /* This is not a perfect test, because if a function alloca's some
197 memory, puts some code there, and then jumps into it, then the test
198 will succeed even though there is no call dummy. Probably best is
199 to check for a bp_call_dummy breakpoint. */
200 if (PC_IN_CALL_DUMMY (fi->pc, sp, fi->frame))
202 if (frame_in_dummy (fi))
205 /* Do this regardless of SOURCE because we don't have any source
206 to list for this frame. */
208 printf_filtered ("#%-2d ", level);
209 printf_filtered ("<function called from gdb>\n");
212 if (fi->signal_handler_caller)
214 /* Do this regardless of SOURCE because we don't have any source
215 to list for this frame. */
217 printf_filtered ("#%-2d ", level);
218 printf_filtered ("<signal handler called>\n");
222 /* If fi is not the innermost frame, that normally means that fi->pc
223 points to *after* the call instruction, and we want to get the line
224 containing the call, never the next line. But if the next frame is
225 a signal_handler_caller or a dummy frame, then the next frame was
226 not entered as the result of a call, and we want to get the line
227 containing fi->pc. */
229 find_pc_line (fi->pc,
231 && !fi->next->signal_handler_caller
232 && !frame_in_dummy (fi->next));
234 func = find_pc_function (fi->pc);
237 /* In certain pathological cases, the symtabs give the wrong
238 function (when we are in the first function in a file which
239 is compiled without debugging symbols, the previous function
240 is compiled with debugging symbols, and the "foo.o" symbol
241 that is supposed to tell us where the file with debugging symbols
242 ends has been truncated by ar because it is longer than 15
243 characters). This also occurs if the user uses asm() to create
244 a function but not stabs for it (in a file compiled -g).
246 So look in the minimal symbol tables as well, and if it comes
247 up with a larger address for the function use that instead.
248 I don't think this can ever cause any problems; there shouldn't
249 be any minimal symbols in the middle of a function; if this is
250 ever changed many parts of GDB will need to be changed (and we'll
251 create a find_pc_minimal_function or some such). */
253 struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
255 && (SYMBOL_VALUE_ADDRESS (msymbol)
256 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
258 /* In this case we have no way of knowing the source file
259 and line number, so don't print them. */
261 /* We also don't know anything about the function besides
262 its address and name. */
264 funname = SYMBOL_NAME (msymbol);
265 funlang = SYMBOL_LANGUAGE (msymbol);
269 funname = SYMBOL_NAME (func);
270 funlang = SYMBOL_LANGUAGE (func);
275 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
278 funname = SYMBOL_NAME (msymbol);
279 funlang = SYMBOL_LANGUAGE (msymbol);
283 if (source >= 0 || !sal.symtab)
286 printf_filtered ("#%-2d ", level);
288 if (fi->pc != sal.pc || !sal.symtab)
290 print_address_numeric (fi->pc, gdb_stdout);
291 printf_filtered (" in ");
293 fprintf_symbol_filtered (gdb_stdout, funname ? funname : "??", funlang,
296 fputs_filtered (" (", gdb_stdout);
299 struct print_args_args args;
302 catch_errors (print_args_stub, (char *)&args, "", RETURN_MASK_ERROR);
304 printf_filtered (")");
305 if (sal.symtab && sal.symtab->filename)
308 printf_filtered (" at %s:%d", sal.symtab->filename, sal.line);
311 #ifdef PC_LOAD_SEGMENT
312 /* If we couldn't print out function name but if can figure out what
313 load segment this pc value is from, at least print out some info
314 about its load segment. */
317 printf_filtered (" from %s", PC_LOAD_SEGMENT (fi->pc));
320 printf_filtered ("\n");
323 if ((source != 0) && sal.symtab)
326 int mid_statement = source < 0 && fi->pc != sal.pc;
327 if (frame_file_full_name)
328 done = identify_source_line (sal.symtab, sal.line, mid_statement,
332 if (addressprint && mid_statement)
334 print_address_numeric (fi->pc, gdb_stdout);
335 printf_filtered ("\t");
337 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
339 current_source_line = max (sal.line - lines_to_list/2, 1);
342 set_default_breakpoint (1, fi->pc, sal.symtab, sal.line);
344 gdb_flush (gdb_stdout);
348 * Read a frame specification in whatever the appropriate format is.
349 * Call error() if the specification is in any way invalid (i.e.
350 * this function never returns NULL).
353 parse_frame_specification (frame_exp)
358 CORE_ADDR args[MAXARGS];
362 char *addr_string, *p;
363 struct cleanup *tmp_cleanup;
365 while (*frame_exp == ' ') frame_exp++;
369 if (numargs > MAXARGS)
370 error ("Too many args in frame specification");
371 /* Parse an argument. */
372 for (p = frame_exp; *p && *p != ' '; p++)
374 addr_string = savestring(frame_exp, p - frame_exp);
377 tmp_cleanup = make_cleanup (free, addr_string);
378 args[numargs++] = parse_and_eval_address (addr_string);
379 do_cleanups (tmp_cleanup);
382 /* Skip spaces, move to possible next arg. */
383 while (*p == ' ') p++;
391 if (selected_frame == NULL)
392 error ("No selected frame.");
393 return selected_frame;
398 FRAME fid = find_relative_frame (get_current_frame (), &level);
402 /* find_relative_frame was successful */
405 /* If (s)he specifies the frame with an address, he deserves what
406 (s)he gets. Still, give the highest one that matches. */
408 for (fid = get_current_frame ();
409 fid && FRAME_FP (fid) != args[0];
410 fid = get_prev_frame (fid))
414 while ((tfid = get_prev_frame (fid)) &&
415 (FRAME_FP (tfid) == args[0]))
418 /* We couldn't identify the frame as an existing frame, but
419 perhaps we can create one with a single argument.
420 Fall through to default case; it's up to SETUP_ARBITRARY_FRAME
421 to complain if it doesn't like a single arg. */
425 #ifdef SETUP_ARBITRARY_FRAME
426 return SETUP_ARBITRARY_FRAME (numargs, args);
428 /* Usual case. Do it here rather than have everyone supply
429 a SETUP_ARBITRARY_FRAME that does this. */
431 return create_new_frame (args[0], 0);
432 error ("Too many args in frame specification");
439 /* FRAME_ARGS_ADDRESS_CORRECT is just like FRAME_ARGS_ADDRESS except
440 that if it is unsure about the answer, it returns 0
441 instead of guessing (this happens on the VAX and i960, for example).
443 On most machines, we never have to guess about the args address,
444 so FRAME_ARGS_ADDRESS{,_CORRECT} are the same. */
445 #if !defined (FRAME_ARGS_ADDRESS_CORRECT)
446 #define FRAME_ARGS_ADDRESS_CORRECT FRAME_ARGS_ADDRESS
449 /* Print verbosely the selected frame or the frame at address ADDR.
450 This means absolutely all information in the frame is printed. */
453 frame_info (addr_exp, from_tty)
458 struct frame_info *fi;
459 struct frame_saved_regs fsr;
460 struct symtab_and_line sal;
466 enum language funlang = language_unknown;
468 if (!target_has_stack)
471 frame = parse_frame_specification (addr_exp);
473 error ("Invalid frame specified.");
475 fi = get_frame_info (frame);
476 sal = find_pc_line (fi->pc,
478 && !fi->next->signal_handler_caller
479 && !frame_in_dummy (fi->next));
480 func = get_frame_function (frame);
481 s = find_pc_symtab(fi->pc);
484 funname = SYMBOL_NAME (func);
485 funlang = SYMBOL_LANGUAGE (func);
489 register struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc);
492 funname = SYMBOL_NAME (msymbol);
493 funlang = SYMBOL_LANGUAGE (msymbol);
496 calling_frame = get_prev_frame (frame);
498 if (!addr_exp && selected_frame_level >= 0)
500 printf_filtered ("Stack level %d, frame at ", selected_frame_level);
501 print_address_numeric (FRAME_FP(frame), gdb_stdout);
502 printf_filtered (":\n");
506 printf_filtered ("Stack frame at ");
507 print_address_numeric (FRAME_FP(frame), gdb_stdout);
508 printf_filtered (":\n");
510 printf_filtered (" %s = ",
511 reg_names[PC_REGNUM]);
512 print_address_numeric (fi->pc, gdb_stdout);
517 printf_filtered (" in ");
518 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
519 DMGL_ANSI | DMGL_PARAMS);
523 printf_filtered (" (%s:%d)", sal.symtab->filename, sal.line);
524 puts_filtered ("; ");
526 printf_filtered ("saved %s ", reg_names[PC_REGNUM]);
527 print_address_numeric (FRAME_SAVED_PC (frame), gdb_stdout);
528 printf_filtered ("\n");
532 #ifdef FRAMELESS_FUNCTION_INVOCATION
533 FRAMELESS_FUNCTION_INVOCATION (fi, frameless);
536 printf_filtered (" (FRAMELESS),");
541 printf_filtered (" called by frame at ");
542 print_address_numeric (FRAME_FP (calling_frame), gdb_stdout);
544 if (fi->next && calling_frame)
549 printf_filtered (" caller of frame at ");
550 print_address_numeric (fi->next->frame, gdb_stdout);
552 if (fi->next || calling_frame)
553 puts_filtered ("\n");
555 printf_filtered (" source language %s.\n", language_str (s->language));
557 #ifdef PRINT_EXTRA_FRAME_INFO
558 PRINT_EXTRA_FRAME_INFO (fi);
562 /* Address of the argument list for this frame, or 0. */
563 CORE_ADDR arg_list = FRAME_ARGS_ADDRESS_CORRECT (fi);
564 /* Number of args for this frame, or -1 if unknown. */
568 printf_filtered (" Arglist at unknown address.\n");
571 printf_filtered (" Arglist at ");
572 print_address_numeric (arg_list, gdb_stdout);
573 printf_filtered (",");
575 FRAME_NUM_ARGS (numargs, fi);
577 puts_filtered (" args: ");
578 else if (numargs == 0)
579 puts_filtered (" no args.");
580 else if (numargs == 1)
581 puts_filtered (" 1 arg: ");
583 printf_filtered (" %d args: ", numargs);
584 print_frame_args (func, fi, numargs, gdb_stdout);
585 puts_filtered ("\n");
589 /* Address of the local variables for this frame, or 0. */
590 CORE_ADDR arg_list = FRAME_LOCALS_ADDRESS (fi);
593 printf_filtered (" Locals at unknown address,");
596 printf_filtered (" Locals at ");
597 print_address_numeric (arg_list, gdb_stdout);
598 printf_filtered (",");
602 #if defined (FRAME_FIND_SAVED_REGS)
603 get_frame_saved_regs (fi, &fsr);
604 /* The sp is special; what's returned isn't the save address, but
605 actually the value of the previous frame's sp. */
606 printf_filtered (" Previous frame's sp is ");
607 print_address_numeric (fsr.regs[SP_REGNUM], gdb_stdout);
608 printf_filtered ("\n");
610 for (i = 0; i < NUM_REGS; i++)
611 if (fsr.regs[i] && i != SP_REGNUM)
614 puts_filtered (" Saved registers:\n ");
618 printf_filtered (" %s at ", reg_names[i]);
619 print_address_numeric (fsr.regs[i], gdb_stdout);
623 puts_filtered ("\n");
624 #else /* Have FRAME_FIND_SAVED_REGS. */
625 puts_filtered ("\n");
626 #endif /* Have FRAME_FIND_SAVED_REGS. */
630 /* Set a limit on the number of frames printed by default in a
633 static int backtrace_limit;
636 set_backtrace_limit_command (count_exp, from_tty)
640 int count = parse_and_eval_address (count_exp);
643 error ("Negative argument not meaningful as backtrace limit.");
645 backtrace_limit = count;
649 backtrace_limit_info (arg, from_tty)
654 error ("\"Info backtrace-limit\" takes no arguments.");
656 printf_unfiltered ("Backtrace limit: %d.\n", backtrace_limit);
660 /* Print briefly all stack frames or just the innermost COUNT frames. */
663 backtrace_command (count_exp, from_tty)
667 struct frame_info *fi;
669 register FRAME frame;
671 register FRAME trailing;
672 register int trailing_level;
674 if (!target_has_stack)
677 /* The following code must do two things. First, it must
678 set the variable TRAILING to the frame from which we should start
679 printing. Second, it must set the variable count to the number
680 of frames which we should print, or -1 if all of them. */
681 trailing = get_current_frame ();
685 count = parse_and_eval_address (count_exp);
693 while (current && count--)
696 current = get_prev_frame (current);
699 /* Will stop when CURRENT reaches the top of the stack. TRAILING
700 will be COUNT below it. */
704 trailing = get_prev_frame (trailing);
705 current = get_prev_frame (current);
717 struct partial_symtab *ps;
719 /* Read in symbols for all of the frames. Need to do this in
720 a separate pass so that "Reading in symbols for xxx" messages
721 don't screw up the appearance of the backtrace. Also
722 if people have strong opinions against reading symbols for
723 backtrace this may have to be an option. */
725 for (frame = trailing;
726 frame != NULL && i--;
727 frame = get_prev_frame (frame))
730 fi = get_frame_info (frame);
731 ps = find_pc_psymtab (fi->pc);
733 PSYMTAB_TO_SYMTAB (ps); /* Force syms to come in */
737 for (i = 0, frame = trailing;
739 i++, frame = get_prev_frame (frame))
742 fi = get_frame_info (frame);
744 /* Don't use print_stack_frame; if an error() occurs it probably
745 means further attempts to backtrace would fail (on the other
746 hand, perhaps the code does or could be fixed to make sure
747 the frame->prev field gets set to NULL in that case). */
748 print_frame_info (fi, trailing_level + i, 0, 1);
751 /* If we've stopped before the end, mention that. */
752 if (frame && from_tty)
753 printf_filtered ("(More stack frames follow...)\n");
756 /* Print the local variables of a block B active in FRAME.
757 Return 1 if any variables were printed; 0 otherwise. */
760 print_block_frame_locals (b, frame, stream)
762 register FRAME frame;
763 register GDB_FILE *stream;
767 register struct symbol *sym;
768 register int values_printed = 0;
770 nsyms = BLOCK_NSYMS (b);
772 for (i = 0; i < nsyms; i++)
774 sym = BLOCK_SYM (b, i);
775 switch (SYMBOL_CLASS (sym))
782 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
783 fputs_filtered (" = ", stream);
784 print_variable_value (sym, frame, stream);
785 fprintf_filtered (stream, "\n");
789 /* Ignore symbols which are not locals. */
793 return values_printed;
796 /* Same, but print labels. */
799 print_block_frame_labels (b, have_default, stream)
802 register GDB_FILE *stream;
806 register struct symbol *sym;
807 register int values_printed = 0;
809 nsyms = BLOCK_NSYMS (b);
811 for (i = 0; i < nsyms; i++)
813 sym = BLOCK_SYM (b, i);
814 if (STREQ (SYMBOL_NAME (sym), "default"))
820 if (SYMBOL_CLASS (sym) == LOC_LABEL)
822 struct symtab_and_line sal;
823 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
825 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
828 fprintf_filtered (stream, " ");
829 print_address_numeric (SYMBOL_VALUE_ADDRESS (sym), stream);
831 fprintf_filtered (stream, " in file %s, line %d\n",
832 sal.symtab->filename, sal.line);
835 return values_printed;
838 /* Print on STREAM all the local variables in frame FRAME,
839 including all the blocks active in that frame
842 Returns 1 if the job was done,
843 or 0 if nothing was printed because we have no info
844 on the function running in FRAME. */
847 print_frame_local_vars (frame, stream)
848 register FRAME frame;
849 register GDB_FILE *stream;
851 register struct block *block = get_frame_block (frame);
852 register int values_printed = 0;
856 fprintf_filtered (stream, "No symbol table info available.\n");
862 if (print_block_frame_locals (block, frame, stream))
864 /* After handling the function's top-level block, stop.
865 Don't continue to its superblock, the block of
867 if (BLOCK_FUNCTION (block))
869 block = BLOCK_SUPERBLOCK (block);
874 fprintf_filtered (stream, "No locals.\n");
878 /* Same, but print labels. */
881 print_frame_label_vars (frame, this_level_only, stream)
882 register FRAME frame;
884 register GDB_FILE *stream;
886 register struct blockvector *bl;
887 register struct block *block = get_frame_block (frame);
888 register int values_printed = 0;
889 int index, have_default = 0;
890 char *blocks_printed;
891 struct frame_info *fi = get_frame_info (frame);
892 CORE_ADDR pc = fi->pc;
896 fprintf_filtered (stream, "No symbol table info available.\n");
900 bl = blockvector_for_pc (BLOCK_END (block) - 4, &index);
901 blocks_printed = (char *) alloca (BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
902 memset (blocks_printed, 0, BLOCKVECTOR_NBLOCKS (bl) * sizeof (char));
906 CORE_ADDR end = BLOCK_END (block) - 4;
909 if (bl != blockvector_for_pc (end, &index))
910 error ("blockvector blotch");
911 if (BLOCKVECTOR_BLOCK (bl, index) != block)
912 error ("blockvector botch");
913 last_index = BLOCKVECTOR_NBLOCKS (bl);
916 /* Don't print out blocks that have gone by. */
917 while (index < last_index
918 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < pc)
921 while (index < last_index
922 && BLOCK_END (BLOCKVECTOR_BLOCK (bl, index)) < end)
924 if (blocks_printed[index] == 0)
926 if (print_block_frame_labels (BLOCKVECTOR_BLOCK (bl, index), &have_default, stream))
928 blocks_printed[index] = 1;
934 if (values_printed && this_level_only)
937 /* After handling the function's top-level block, stop.
938 Don't continue to its superblock, the block of
940 if (BLOCK_FUNCTION (block))
942 block = BLOCK_SUPERBLOCK (block);
945 if (!values_printed && !this_level_only)
947 fprintf_filtered (stream, "No catches.\n");
953 locals_info (args, from_tty)
958 error ("No frame selected.");
959 print_frame_local_vars (selected_frame, gdb_stdout);
963 catch_info (ignore, from_tty)
968 error ("No frame selected.");
969 print_frame_label_vars (selected_frame, 0, gdb_stdout);
973 print_frame_arg_vars (frame, stream)
974 register FRAME frame;
975 register GDB_FILE *stream;
977 struct symbol *func = get_frame_function (frame);
978 register struct block *b;
981 register struct symbol *sym, *sym2;
982 register int values_printed = 0;
986 fprintf_filtered (stream, "No symbol table info available.\n");
990 b = SYMBOL_BLOCK_VALUE (func);
991 nsyms = BLOCK_NSYMS (b);
993 for (i = 0; i < nsyms; i++)
995 sym = BLOCK_SYM (b, i);
996 switch (SYMBOL_CLASS (sym))
1002 case LOC_REGPARM_ADDR:
1003 case LOC_BASEREG_ARG:
1005 fputs_filtered (SYMBOL_SOURCE_NAME (sym), stream);
1006 fputs_filtered (" = ", stream);
1008 /* We have to look up the symbol because arguments can have
1009 two entries (one a parameter, one a local) and the one we
1010 want is the local, which lookup_symbol will find for us.
1011 This includes gcc1 (not gcc2) on the sparc when passing a
1012 small structure and gcc2 when the argument type is float
1013 and it is passed as a double and converted to float by
1014 the prologue (in the latter case the type of the LOC_ARG
1015 symbol is double and the type of the LOC_LOCAL symbol is
1016 float). There are also LOC_ARG/LOC_REGISTER pairs which
1017 are not combined in symbol-reading. */
1019 sym2 = lookup_symbol (SYMBOL_NAME (sym),
1020 b, VAR_NAMESPACE, (int *)NULL, (struct symtab **)NULL);
1021 print_variable_value (sym2, frame, stream);
1022 fprintf_filtered (stream, "\n");
1026 /* Don't worry about things which aren't arguments. */
1031 if (!values_printed)
1033 fprintf_filtered (stream, "No arguments.\n");
1038 args_info (ignore, from_tty)
1042 if (!selected_frame)
1043 error ("No frame selected.");
1044 print_frame_arg_vars (selected_frame, gdb_stdout);
1047 /* Select frame FRAME, and note that its stack level is LEVEL.
1048 LEVEL may be -1 if an actual level number is not known. */
1051 select_frame (frame, level)
1055 register struct symtab *s;
1057 selected_frame = frame;
1058 selected_frame_level = level;
1060 /* Ensure that symbols for this frame are read in. Also, determine the
1061 source language of this frame, and switch to it if desired. */
1064 s = find_pc_symtab (get_frame_info (frame)->pc);
1066 && s->language != current_language->la_language
1067 && s->language != language_unknown
1068 && language_mode == language_mode_auto) {
1069 set_language(s->language);
1074 /* Store the selected frame and its level into *FRAMEP and *LEVELP.
1075 If there is no selected frame, *FRAMEP is set to NULL. */
1078 record_selected_frame (frameaddrp, levelp)
1079 FRAME_ADDR *frameaddrp;
1082 *frameaddrp = selected_frame ? FRAME_FP (selected_frame) : 0;
1083 *levelp = selected_frame_level;
1086 /* Return the symbol-block in which the selected frame is executing.
1087 Can return zero under various legitimate circumstances. */
1090 get_selected_block ()
1092 if (!target_has_stack)
1095 if (!selected_frame)
1096 return get_current_block ();
1097 return get_frame_block (selected_frame);
1100 /* Find a frame a certain number of levels away from FRAME.
1101 LEVEL_OFFSET_PTR points to an int containing the number of levels.
1102 Positive means go to earlier frames (up); negative, the reverse.
1103 The int that contains the number of levels is counted toward
1104 zero as the frames for those levels are found.
1105 If the top or bottom frame is reached, that frame is returned,
1106 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
1107 how much farther the original request asked to go. */
1110 find_relative_frame (frame, level_offset_ptr)
1111 register FRAME frame;
1112 register int* level_offset_ptr;
1114 register FRAME prev;
1115 register FRAME frame1;
1117 /* Going up is simple: just do get_prev_frame enough times
1118 or until initial frame is reached. */
1119 while (*level_offset_ptr > 0)
1121 prev = get_prev_frame (frame);
1124 (*level_offset_ptr)--;
1127 /* Going down is just as simple. */
1128 if (*level_offset_ptr < 0)
1130 while (*level_offset_ptr < 0) {
1131 frame1 = get_next_frame (frame);
1135 (*level_offset_ptr)++;
1141 /* The "select_frame" command. With no arg, NOP.
1142 With arg LEVEL_EXP, select the frame at level LEVEL if it is a
1143 valid level. Otherwise, treat level_exp as an address expression
1144 and select it. See parse_frame_specification for more info on proper
1145 frame expressions. */
1149 select_frame_command (level_exp, from_tty)
1153 register FRAME frame, frame1;
1154 unsigned int level = 0;
1156 if (!target_has_stack)
1157 error ("No stack.");
1159 frame = parse_frame_specification (level_exp);
1161 /* Try to figure out what level this frame is. But if there is
1162 no current stack, don't error out -- let the user set one. */
1164 if (get_current_frame()) {
1165 for (frame1 = get_prev_frame (0);
1166 frame1 && frame1 != frame;
1167 frame1 = get_prev_frame (frame1))
1174 select_frame (frame, level);
1177 /* The "frame" command. With no arg, print selected frame briefly.
1178 With arg, behaves like select_frame and then prints the selected
1182 frame_command (level_exp, from_tty)
1186 select_frame_command (level_exp, from_tty);
1187 print_stack_frame (selected_frame, selected_frame_level, 1);
1190 /* Select the frame up one or COUNT stack levels
1191 from the previously selected frame, and print it briefly. */
1195 up_silently_command (count_exp, from_tty)
1199 register FRAME frame;
1200 int count = 1, count1;
1202 count = parse_and_eval_address (count_exp);
1205 if (target_has_stack == 0 || selected_frame == 0)
1206 error ("No stack.");
1208 frame = find_relative_frame (selected_frame, &count1);
1209 if (count1 != 0 && count_exp == 0)
1210 error ("Initial frame selected; you cannot go up.");
1211 select_frame (frame, selected_frame_level + count - count1);
1215 up_command (count_exp, from_tty)
1219 up_silently_command (count_exp, from_tty);
1220 print_stack_frame (selected_frame, selected_frame_level, 1);
1223 /* Select the frame down one or COUNT stack levels
1224 from the previously selected frame, and print it briefly. */
1228 down_silently_command (count_exp, from_tty)
1232 register FRAME frame;
1233 int count = -1, count1;
1235 count = - parse_and_eval_address (count_exp);
1238 if (target_has_stack == 0 || selected_frame == 0)
1239 error ("No stack.");
1241 frame = find_relative_frame (selected_frame, &count1);
1242 if (count1 != 0 && count_exp == 0)
1245 /* We only do this if count_exp is not specified. That way "down"
1246 means to really go down (and let me know if that is
1247 impossible), but "down 9999" can be used to mean go all the way
1248 down without getting an error. */
1250 error ("Bottom (i.e., innermost) frame selected; you cannot go down.");
1253 select_frame (frame, selected_frame_level + count - count1);
1258 down_command (count_exp, from_tty)
1262 down_silently_command (count_exp, from_tty);
1263 print_stack_frame (selected_frame, selected_frame_level, 1);
1267 return_command (retval_exp, from_tty)
1271 struct symbol *thisfun;
1272 FRAME_ADDR selected_frame_addr;
1273 CORE_ADDR selected_frame_pc;
1275 value return_value = NULL;
1277 if (selected_frame == NULL)
1278 error ("No selected frame.");
1279 thisfun = get_frame_function (selected_frame);
1280 selected_frame_addr = FRAME_FP (selected_frame);
1281 selected_frame_pc = (get_frame_info (selected_frame))->pc;
1283 /* Compute the return value (if any -- possibly getting errors here). */
1287 return_value = parse_and_eval (retval_exp);
1289 /* Make sure we have fully evaluated it, since
1290 it might live in the stack frame we're about to pop. */
1291 if (VALUE_LAZY (return_value))
1292 value_fetch_lazy (return_value);
1295 /* If interactive, require confirmation. */
1301 if (!query ("Make %s return now? ", SYMBOL_SOURCE_NAME (thisfun)))
1303 error ("Not confirmed.");
1308 if (!query ("Make selected stack frame return now? "))
1309 error ("Not confirmed.");
1312 /* Do the real work. Pop until the specified frame is current. We
1313 use this method because the selected_frame is not valid after
1314 a POP_FRAME. The pc comparison makes this work even if the
1315 selected frame shares its fp with another frame. */
1317 while ( selected_frame_addr != FRAME_FP (frame = get_current_frame())
1318 || selected_frame_pc != (get_frame_info (frame))->pc )
1321 /* Then pop that frame. */
1325 /* Compute the return value (if any) and store in the place
1326 for return values. */
1329 set_return_value (return_value);
1331 /* If interactive, print the frame that is now current. */
1334 frame_command ("0", 1);
1337 /* Gets the language of the current frame. */
1339 get_frame_language()
1341 register struct symtab *s;
1343 enum language flang; /* The language of the current frame */
1345 fr = get_frame_info(selected_frame);
1348 s = find_pc_symtab(fr->pc);
1350 flang = s->language;
1352 flang = language_unknown;
1355 flang = language_unknown;
1361 _initialize_stack ()
1364 backtrace_limit = 30;
1367 add_com ("return", class_stack, return_command,
1368 "Make selected stack frame return to its caller.\n\
1369 Control remains in the debugger, but when you continue\n\
1370 execution will resume in the frame above the one now selected.\n\
1371 If an argument is given, it is an expression for the value to return.");
1373 add_com ("up", class_stack, up_command,
1374 "Select and print stack frame that called this one.\n\
1375 An argument says how many frames up to go.");
1376 add_com ("up-silently", class_support, up_silently_command,
1377 "Same as the `up' command, but does not print anything.\n\
1378 This is useful in command scripts.");
1380 add_com ("down", class_stack, down_command,
1381 "Select and print stack frame called by this one.\n\
1382 An argument says how many frames down to go.");
1383 add_com_alias ("do", "down", class_stack, 1);
1384 add_com_alias ("dow", "down", class_stack, 1);
1385 add_com ("down-silently", class_support, down_silently_command,
1386 "Same as the `down' command, but does not print anything.\n\
1387 This is useful in command scripts.");
1389 add_com ("frame", class_stack, frame_command,
1390 "Select and print a stack frame.\n\
1391 With no argument, print the selected stack frame. (See also \"info frame\").\n\
1392 An argument specifies the frame to select.\n\
1393 It can be a stack frame number or the address of the frame.\n\
1394 With argument, nothing is printed if input is coming from\n\
1395 a command file or a user-defined command.");
1397 add_com_alias ("f", "frame", class_stack, 1);
1399 add_com ("select-frame", class_stack, select_frame_command,
1400 "Select a stack frame without printing anything.\n\
1401 An argument specifies the frame to select.\n\
1402 It can be a stack frame number or the address of the frame.\n");
1404 add_com ("backtrace", class_stack, backtrace_command,
1405 "Print backtrace of all stack frames, or innermost COUNT frames.\n\
1406 With a negative argument, print outermost -COUNT frames.");
1407 add_com_alias ("bt", "backtrace", class_stack, 0);
1408 add_com_alias ("where", "backtrace", class_alias, 0);
1409 add_info ("stack", backtrace_command,
1410 "Backtrace of the stack, or innermost COUNT frames.");
1411 add_info_alias ("s", "stack", 1);
1412 add_info ("frame", frame_info,
1413 "All about selected stack frame, or frame at ADDR.");
1414 add_info_alias ("f", "frame", 1);
1415 add_info ("locals", locals_info,
1416 "Local variables of current stack frame.");
1417 add_info ("args", args_info,
1418 "Argument variables of current stack frame.");
1419 add_info ("catch", catch_info,
1420 "Exceptions that can be caught in the current stack frame.");
1423 add_cmd ("backtrace-limit", class_stack, set_backtrace_limit_command,
1424 "Specify maximum number of frames for \"backtrace\" to print by default.",
1426 add_info ("backtrace-limit", backtrace_limit_info,
1427 "The maximum number of frames for \"backtrace\" to print by default.");