1 /* Print and select stack frames for GDB, the GNU debugger.
3 Copyright (C) 1986-2014 Free Software Foundation, Inc.
5 This file is part of GDB.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
24 #include "expression.h"
31 #include "breakpoint.h"
38 #include "dictionary.h"
39 #include "exceptions.h"
40 #include "reggroups.h"
44 #include "gdbthread.h"
45 #include "cp-support.h"
47 #include "inline-frame.h"
49 #include "cli/cli-utils.h"
52 #include "gdb_assert.h"
57 #include "extension.h"
59 void (*deprecated_selected_frame_level_changed_hook) (int);
61 /* The possible choices of "set print frame-arguments", and the value
64 static const char *const print_frame_arguments_choices[] =
65 {"all", "scalars", "none", NULL};
66 static const char *print_frame_arguments = "scalars";
68 /* If non-zero, don't invoke pretty-printers for frame arguments. */
69 static int print_raw_frame_arguments;
71 /* The possible choices of "set print entry-values", and the value
74 const char print_entry_values_no[] = "no";
75 const char print_entry_values_only[] = "only";
76 const char print_entry_values_preferred[] = "preferred";
77 const char print_entry_values_if_needed[] = "if-needed";
78 const char print_entry_values_both[] = "both";
79 const char print_entry_values_compact[] = "compact";
80 const char print_entry_values_default[] = "default";
81 static const char *const print_entry_values_choices[] =
83 print_entry_values_no,
84 print_entry_values_only,
85 print_entry_values_preferred,
86 print_entry_values_if_needed,
87 print_entry_values_both,
88 print_entry_values_compact,
89 print_entry_values_default,
92 const char *print_entry_values = print_entry_values_default;
94 /* Prototypes for local functions. */
96 static void print_frame_local_vars (struct frame_info *, int,
99 static void print_frame (struct frame_info *frame, int print_level,
100 enum print_what print_what, int print_args,
101 struct symtab_and_line sal);
103 static void set_last_displayed_sal (int valid,
104 struct program_space *pspace,
106 struct symtab *symtab,
109 /* Zero means do things normally; we are interacting directly with the
110 user. One means print the full filename and linenumber when a
111 frame is printed, and do so in a format emacs18/emacs19.22 can
112 parse. Two means print similar annotations, but in many more
113 cases and in a slightly different syntax. */
115 int annotation_level = 0;
117 /* These variables hold the last symtab and line we displayed to the user.
118 * This is where we insert a breakpoint or a skiplist entry by default. */
119 static int last_displayed_sal_valid = 0;
120 static struct program_space *last_displayed_pspace = 0;
121 static CORE_ADDR last_displayed_addr = 0;
122 static struct symtab *last_displayed_symtab = 0;
123 static int last_displayed_line = 0;
126 /* Return 1 if we should display the address in addition to the location,
127 because we are in the middle of a statement. */
130 frame_show_address (struct frame_info *frame,
131 struct symtab_and_line sal)
133 /* If there is a line number, but no PC, then there is no location
134 information associated with this sal. The only way that should
135 happen is for the call sites of inlined functions (SAL comes from
136 find_frame_sal). Otherwise, we would have some PC range if the
137 SAL came from a line table. */
138 if (sal.line != 0 && sal.pc == 0 && sal.end == 0)
140 if (get_next_frame (frame) == NULL)
141 gdb_assert (inline_skipped_frames (inferior_ptid) > 0);
143 gdb_assert (get_frame_type (get_next_frame (frame)) == INLINE_FRAME);
147 return get_frame_pc (frame) != sal.pc;
150 /* Show or print a stack frame FRAME briefly. The output is format
151 according to PRINT_LEVEL and PRINT_WHAT printing the frame's
152 relative level, function name, argument list, and file name and
153 line number. If the frame's PC is not at the beginning of the
154 source line, the actual PC is printed at the beginning. */
157 print_stack_frame (struct frame_info *frame, int print_level,
158 enum print_what print_what,
161 volatile struct gdb_exception e;
163 /* For mi, alway print location and address. */
164 if (ui_out_is_mi_like_p (current_uiout))
165 print_what = LOC_AND_ADDRESS;
167 TRY_CATCH (e, RETURN_MASK_ERROR)
169 print_frame_info (frame, print_level, print_what, 1 /* print_args */,
172 set_current_sal_from_frame (frame);
176 /* Print nameless arguments of frame FRAME on STREAM, where START is
177 the offset of the first nameless argument, and NUM is the number of
178 nameless arguments to print. FIRST is nonzero if this is the first
179 argument (not just the first nameless argument). */
182 print_frame_nameless_args (struct frame_info *frame, long start, int num,
183 int first, struct ui_file *stream)
185 struct gdbarch *gdbarch = get_frame_arch (frame);
186 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
191 for (i = 0; i < num; i++)
194 argsaddr = get_frame_args_address (frame);
197 arg_value = read_memory_integer (argsaddr + start,
198 sizeof (int), byte_order);
200 fprintf_filtered (stream, ", ");
201 fprintf_filtered (stream, "%ld", arg_value);
203 start += sizeof (int);
207 /* Print single argument of inferior function. ARG must be already
210 Errors are printed as if they would be the parameter value. Use zeroed ARG
211 iff it should not be printed accoring to user settings. */
214 print_frame_arg (const struct frame_arg *arg)
216 struct ui_out *uiout = current_uiout;
217 volatile struct gdb_exception except;
218 struct cleanup *old_chain;
221 stb = mem_fileopen ();
222 old_chain = make_cleanup_ui_file_delete (stb);
224 gdb_assert (!arg->val || !arg->error);
225 gdb_assert (arg->entry_kind == print_entry_values_no
226 || arg->entry_kind == print_entry_values_only
227 || (!ui_out_is_mi_like_p (uiout)
228 && arg->entry_kind == print_entry_values_compact));
230 annotate_arg_begin ();
232 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
233 fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
234 SYMBOL_LANGUAGE (arg->sym), DMGL_PARAMS | DMGL_ANSI);
235 if (arg->entry_kind == print_entry_values_compact)
237 /* It is OK to provide invalid MI-like stream as with
238 PRINT_ENTRY_VALUE_COMPACT we never use MI. */
239 fputs_filtered ("=", stb);
241 fprintf_symbol_filtered (stb, SYMBOL_PRINT_NAME (arg->sym),
242 SYMBOL_LANGUAGE (arg->sym),
243 DMGL_PARAMS | DMGL_ANSI);
245 if (arg->entry_kind == print_entry_values_only
246 || arg->entry_kind == print_entry_values_compact)
247 fputs_filtered ("@entry", stb);
248 ui_out_field_stream (uiout, "name", stb);
249 annotate_arg_name_end ();
250 ui_out_text (uiout, "=");
252 if (!arg->val && !arg->error)
253 ui_out_text (uiout, "...");
257 except.message = arg->error;
260 /* TRY_CATCH has two statements, wrap it in a block. */
262 TRY_CATCH (except, RETURN_MASK_ERROR)
264 const struct language_defn *language;
265 struct value_print_options opts;
267 /* Avoid value_print because it will deref ref parameters. We
268 just want to print their addresses. Print ??? for args whose
269 address we do not know. We pass 2 as "recurse" to val_print
270 because our standard indentation here is 4 spaces, and
271 val_print indents 2 for each recurse. */
273 annotate_arg_value (value_type (arg->val));
275 /* Use the appropriate language to display our symbol, unless the
276 user forced the language to a specific language. */
277 if (language_mode == language_mode_auto)
278 language = language_def (SYMBOL_LANGUAGE (arg->sym));
280 language = current_language;
282 get_no_prettyformat_print_options (&opts);
284 opts.raw = print_raw_frame_arguments;
286 /* True in "summary" mode, false otherwise. */
287 opts.summary = !strcmp (print_frame_arguments, "scalars");
289 common_val_print (arg->val, stb, 2, &opts, language);
293 fprintf_filtered (stb, _("<error reading variable: %s>"),
297 ui_out_field_stream (uiout, "value", stb);
299 /* Also invoke ui_out_tuple_end. */
300 do_cleanups (old_chain);
305 /* Read in inferior function local SYM at FRAME into ARGP. Caller is
306 responsible for xfree of ARGP->ERROR. This function never throws an
310 read_frame_local (struct symbol *sym, struct frame_info *frame,
311 struct frame_arg *argp)
313 volatile struct gdb_exception except;
314 struct value *val = NULL;
316 TRY_CATCH (except, RETURN_MASK_ERROR)
318 val = read_var_value (sym, frame);
321 argp->error = (val == NULL) ? xstrdup (except.message) : NULL;
326 /* Read in inferior function parameter SYM at FRAME into ARGP. Caller is
327 responsible for xfree of ARGP->ERROR. This function never throws an
331 read_frame_arg (struct symbol *sym, struct frame_info *frame,
332 struct frame_arg *argp, struct frame_arg *entryargp)
334 struct value *val = NULL, *entryval = NULL;
335 char *val_error = NULL, *entryval_error = NULL;
337 volatile struct gdb_exception except;
339 if (print_entry_values != print_entry_values_only
340 && print_entry_values != print_entry_values_preferred)
342 TRY_CATCH (except, RETURN_MASK_ERROR)
344 val = read_var_value (sym, frame);
348 val_error = alloca (strlen (except.message) + 1);
349 strcpy (val_error, except.message);
353 if (SYMBOL_COMPUTED_OPS (sym) != NULL
354 && SYMBOL_COMPUTED_OPS (sym)->read_variable_at_entry != NULL
355 && print_entry_values != print_entry_values_no
356 && (print_entry_values != print_entry_values_if_needed
357 || !val || value_optimized_out (val)))
359 TRY_CATCH (except, RETURN_MASK_ERROR)
361 const struct symbol_computed_ops *ops;
363 ops = SYMBOL_COMPUTED_OPS (sym);
364 entryval = ops->read_variable_at_entry (sym, frame);
368 entryval_error = alloca (strlen (except.message) + 1);
369 strcpy (entryval_error, except.message);
372 if (except.error == NO_ENTRY_VALUE_ERROR
373 || (entryval && value_optimized_out (entryval)))
376 entryval_error = NULL;
379 if (print_entry_values == print_entry_values_compact
380 || print_entry_values == print_entry_values_default)
382 /* For MI do not try to use print_entry_values_compact for ARGP. */
384 if (val && entryval && !ui_out_is_mi_like_p (current_uiout))
386 struct type *type = value_type (val);
388 if (!value_optimized_out (val)
389 && value_available_contents_eq (val, 0, entryval, 0,
392 /* Initialize it just to avoid a GCC false warning. */
393 struct value *val_deref = NULL, *entryval_deref;
395 /* DW_AT_GNU_call_site_value does match with the current
396 value. If it is a reference still try to verify if
397 dereferenced DW_AT_GNU_call_site_data_value does not
400 TRY_CATCH (except, RETURN_MASK_ERROR)
402 struct type *type_deref;
404 val_deref = coerce_ref (val);
405 if (value_lazy (val_deref))
406 value_fetch_lazy (val_deref);
407 type_deref = value_type (val_deref);
409 entryval_deref = coerce_ref (entryval);
410 if (value_lazy (entryval_deref))
411 value_fetch_lazy (entryval_deref);
413 /* If the reference addresses match but dereferenced
414 content does not match print them. */
416 && !value_optimized_out (val_deref)
417 && !value_optimized_out (entryval_deref)
418 && value_available_contents_eq (val_deref, 0,
420 TYPE_LENGTH (type_deref)))
424 /* Value was not a reference; and its content matches. */
425 if (val == val_deref)
427 /* If the dereferenced content could not be fetched do not
429 else if (except.error == NO_ENTRY_VALUE_ERROR)
431 else if (except.message)
433 entryval_error = alloca (strlen (except.message) + 1);
434 strcpy (entryval_error, except.message);
442 /* Try to remove possibly duplicate error message for ENTRYARGP even
445 if (val_error && entryval_error
446 && strcmp (val_error, entryval_error) == 0)
448 entryval_error = NULL;
450 /* Do not se VAL_EQUAL as the same error message may be shown for
451 the entry value even if no entry values are present in the
457 if (entryval == NULL)
459 if (print_entry_values == print_entry_values_preferred)
461 TRY_CATCH (except, RETURN_MASK_ERROR)
463 val = read_var_value (sym, frame);
467 val_error = alloca (strlen (except.message) + 1);
468 strcpy (val_error, except.message);
471 if (print_entry_values == print_entry_values_only
472 || print_entry_values == print_entry_values_both
473 || (print_entry_values == print_entry_values_preferred
474 && (!val || value_optimized_out (val))))
476 entryval = allocate_optimized_out_value (SYMBOL_TYPE (sym));
477 entryval_error = NULL;
480 if ((print_entry_values == print_entry_values_compact
481 || print_entry_values == print_entry_values_if_needed
482 || print_entry_values == print_entry_values_preferred)
483 && (!val || value_optimized_out (val)) && entryval != NULL)
491 argp->error = val_error ? xstrdup (val_error) : NULL;
492 if (!val && !val_error)
493 argp->entry_kind = print_entry_values_only;
494 else if ((print_entry_values == print_entry_values_compact
495 || print_entry_values == print_entry_values_default) && val_equal)
497 argp->entry_kind = print_entry_values_compact;
498 gdb_assert (!ui_out_is_mi_like_p (current_uiout));
501 argp->entry_kind = print_entry_values_no;
503 entryargp->sym = sym;
504 entryargp->val = entryval;
505 entryargp->error = entryval_error ? xstrdup (entryval_error) : NULL;
506 if (!entryval && !entryval_error)
507 entryargp->entry_kind = print_entry_values_no;
509 entryargp->entry_kind = print_entry_values_only;
512 /* Print the arguments of frame FRAME on STREAM, given the function
513 FUNC running in that frame (as a symbol), where NUM is the number
514 of arguments according to the stack frame (or -1 if the number of
515 arguments is unknown). */
517 /* Note that currently the "number of arguments according to the
518 stack frame" is only known on VAX where i refers to the "number of
519 ints of arguments according to the stack frame". */
522 print_frame_args (struct symbol *func, struct frame_info *frame,
523 int num, struct ui_file *stream)
525 struct ui_out *uiout = current_uiout;
527 /* Offset of next stack argument beyond the one we have seen that is
528 at the highest offset, or -1 if we haven't come to a stack
530 long highest_offset = -1;
531 /* Number of ints of arguments that we have printed so far. */
532 int args_printed = 0;
533 struct cleanup *old_chain;
535 /* True if we should print arguments, false otherwise. */
536 int print_args = strcmp (print_frame_arguments, "none");
538 stb = mem_fileopen ();
539 old_chain = make_cleanup_ui_file_delete (stb);
543 const struct block *b = SYMBOL_BLOCK_VALUE (func);
544 struct block_iterator iter;
547 ALL_BLOCK_SYMBOLS (b, iter, sym)
549 struct frame_arg arg, entryarg;
553 /* Keep track of the highest stack argument offset seen, and
554 skip over any kinds of symbols we don't care about. */
556 if (!SYMBOL_IS_ARGUMENT (sym))
559 switch (SYMBOL_CLASS (sym))
564 long current_offset = SYMBOL_VALUE (sym);
565 int arg_size = TYPE_LENGTH (SYMBOL_TYPE (sym));
567 /* Compute address of next argument by adding the size of
568 this argument and rounding to an int boundary. */
570 ((current_offset + arg_size + sizeof (int) - 1)
571 & ~(sizeof (int) - 1));
573 /* If this is the highest offset seen yet, set
575 if (highest_offset == -1
576 || (current_offset > highest_offset))
577 highest_offset = current_offset;
579 /* Add the number of ints we're about to print to
581 args_printed += (arg_size + sizeof (int) - 1) / sizeof (int);
584 /* We care about types of symbols, but don't need to
585 keep track of stack offsets in them. */
587 case LOC_REGPARM_ADDR:
589 case LOC_OPTIMIZED_OUT:
594 /* We have to look up the symbol because arguments can have
595 two entries (one a parameter, one a local) and the one we
596 want is the local, which lookup_symbol will find for us.
597 This includes gcc1 (not gcc2) on SPARC when passing a
598 small structure and gcc2 when the argument type is float
599 and it is passed as a double and converted to float by
600 the prologue (in the latter case the type of the LOC_ARG
601 symbol is double and the type of the LOC_LOCAL symbol is
603 /* But if the parameter name is null, don't try it. Null
604 parameter names occur on the RS/6000, for traceback
605 tables. FIXME, should we even print them? */
607 if (*SYMBOL_LINKAGE_NAME (sym))
611 nsym = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
612 b, VAR_DOMAIN, NULL);
613 gdb_assert (nsym != NULL);
614 if (SYMBOL_CLASS (nsym) == LOC_REGISTER
615 && !SYMBOL_IS_ARGUMENT (nsym))
617 /* There is a LOC_ARG/LOC_REGISTER pair. This means
618 that it was passed on the stack and loaded into a
619 register, or passed in a register and stored in a
620 stack slot. GDB 3.x used the LOC_ARG; GDB
621 4.0-4.11 used the LOC_REGISTER.
623 Reasons for using the LOC_ARG:
625 (1) Because find_saved_registers may be slow for
628 (2) Because registers are often re-used and stack
629 slots rarely (never?) are. Therefore using
630 the stack slot is much less likely to print
633 Reasons why we might want to use the LOC_REGISTER:
635 (1) So that the backtrace prints the same value
636 as "print foo". I see no compelling reason
637 why this needs to be the case; having the
638 backtrace print the value which was passed
639 in, and "print foo" print the value as
640 modified within the called function, makes
643 Additional note: It might be nice if "info args"
644 displayed both values.
646 One more note: There is a case with SPARC
647 structure passing where we need to use the
648 LOC_REGISTER, but this is dealt with by creating
649 a single LOC_REGPARM in symbol reading. */
651 /* Leave sym (the LOC_ARG) alone. */
658 /* Print the current arg. */
660 ui_out_text (uiout, ", ");
661 ui_out_wrap_hint (uiout, " ");
665 memset (&arg, 0, sizeof (arg));
667 arg.entry_kind = print_entry_values_no;
668 memset (&entryarg, 0, sizeof (entryarg));
670 entryarg.entry_kind = print_entry_values_no;
673 read_frame_arg (sym, frame, &arg, &entryarg);
675 if (arg.entry_kind != print_entry_values_only)
676 print_frame_arg (&arg);
678 if (entryarg.entry_kind != print_entry_values_no)
680 if (arg.entry_kind != print_entry_values_only)
682 ui_out_text (uiout, ", ");
683 ui_out_wrap_hint (uiout, " ");
686 print_frame_arg (&entryarg);
690 xfree (entryarg.error);
696 /* Don't print nameless args in situations where we don't know
697 enough about the stack to find them. */
702 if (highest_offset == -1)
703 start = gdbarch_frame_args_skip (get_frame_arch (frame));
705 start = highest_offset;
707 print_frame_nameless_args (frame, start, num - args_printed,
711 do_cleanups (old_chain);
714 /* Set the current source and line to the location given by frame
715 FRAME, if possible. When CENTER is true, adjust so the relevant
716 line is in the center of the next 'list'. */
719 set_current_sal_from_frame (struct frame_info *frame)
721 struct symtab_and_line sal;
723 find_frame_sal (frame, &sal);
724 if (sal.symtab != NULL)
725 set_current_source_symtab_and_line (&sal);
728 /* If ON, GDB will display disassembly of the next source line when
729 execution of the program being debugged stops.
730 If AUTO (which is the default), or there's no line info to determine
731 the source line of the next instruction, display disassembly of next
732 instruction instead. */
734 static enum auto_boolean disassemble_next_line;
737 show_disassemble_next_line (struct ui_file *file, int from_tty,
738 struct cmd_list_element *c,
741 fprintf_filtered (file,
742 _("Debugger's willingness to use "
743 "disassemble-next-line is %s.\n"),
747 /* Use TRY_CATCH to catch the exception from the gdb_disassembly
748 because it will be broken by filter sometime. */
751 do_gdb_disassembly (struct gdbarch *gdbarch,
752 int how_many, CORE_ADDR low, CORE_ADDR high)
754 volatile struct gdb_exception exception;
756 TRY_CATCH (exception, RETURN_MASK_ERROR)
758 gdb_disassembly (gdbarch, current_uiout, 0,
759 DISASSEMBLY_RAW_INSN, how_many,
762 if (exception.reason < 0)
764 /* If an exception was thrown while doing the disassembly, print
765 the error message, to give the user a clue of what happened. */
766 exception_print (gdb_stderr, exception);
770 /* Print information about frame FRAME. The output is format according
771 to PRINT_LEVEL and PRINT_WHAT and PRINT_ARGS. The meaning of
774 SRC_LINE: Print only source line.
775 LOCATION: Print only location.
776 LOC_AND_SRC: Print location and source line.
778 Used in "where" output, and to emit breakpoint or step
782 print_frame_info (struct frame_info *frame, int print_level,
783 enum print_what print_what, int print_args,
786 struct gdbarch *gdbarch = get_frame_arch (frame);
787 struct symtab_and_line sal;
790 struct ui_out *uiout = current_uiout;
792 if (get_frame_type (frame) == DUMMY_FRAME
793 || get_frame_type (frame) == SIGTRAMP_FRAME
794 || get_frame_type (frame) == ARCH_FRAME)
796 struct cleanup *uiout_cleanup
797 = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
799 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
800 gdbarch, get_frame_pc (frame));
802 /* Do this regardless of SOURCE because we don't have any source
803 to list for this frame. */
806 ui_out_text (uiout, "#");
807 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
808 frame_relative_level (frame));
810 if (ui_out_is_mi_like_p (uiout))
812 annotate_frame_address ();
813 ui_out_field_core_addr (uiout, "addr",
814 gdbarch, get_frame_pc (frame));
815 annotate_frame_address_end ();
818 if (get_frame_type (frame) == DUMMY_FRAME)
820 annotate_function_call ();
821 ui_out_field_string (uiout, "func", "<function called from gdb>");
823 else if (get_frame_type (frame) == SIGTRAMP_FRAME)
825 annotate_signal_handler_caller ();
826 ui_out_field_string (uiout, "func", "<signal handler called>");
828 else if (get_frame_type (frame) == ARCH_FRAME)
830 ui_out_field_string (uiout, "func", "<cross-architecture call>");
832 ui_out_text (uiout, "\n");
833 annotate_frame_end ();
835 /* If disassemble-next-line is set to auto or on output the next
837 if (disassemble_next_line == AUTO_BOOLEAN_AUTO
838 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
839 do_gdb_disassembly (get_frame_arch (frame), 1,
840 get_frame_pc (frame), get_frame_pc (frame) + 1);
842 do_cleanups (uiout_cleanup);
846 /* If FRAME is not the innermost frame, that normally means that
847 FRAME->pc points to *after* the call instruction, and we want to
848 get the line containing the call, never the next line. But if
849 the next frame is a SIGTRAMP_FRAME or a DUMMY_FRAME, then the
850 next frame was not entered as the result of a call, and we want
851 to get the line containing FRAME->pc. */
852 find_frame_sal (frame, &sal);
854 location_print = (print_what == LOCATION
855 || print_what == LOC_AND_ADDRESS
856 || print_what == SRC_AND_LOC);
858 if (location_print || !sal.symtab)
859 print_frame (frame, print_level, print_what, print_args, sal);
861 source_print = (print_what == SRC_LINE || print_what == SRC_AND_LOC);
863 /* If disassemble-next-line is set to auto or on and doesn't have
864 the line debug messages for $pc, output the next instruction. */
865 if ((disassemble_next_line == AUTO_BOOLEAN_AUTO
866 || disassemble_next_line == AUTO_BOOLEAN_TRUE)
867 && source_print && !sal.symtab)
868 do_gdb_disassembly (get_frame_arch (frame), 1,
869 get_frame_pc (frame), get_frame_pc (frame) + 1);
871 if (source_print && sal.symtab)
874 int mid_statement = ((print_what == SRC_LINE)
875 && frame_show_address (frame, sal));
877 if (annotation_level)
878 done = identify_source_line (sal.symtab, sal.line, mid_statement,
879 get_frame_pc (frame));
882 if (deprecated_print_frame_info_listing_hook)
883 deprecated_print_frame_info_listing_hook (sal.symtab,
888 struct value_print_options opts;
890 get_user_print_options (&opts);
891 /* We used to do this earlier, but that is clearly
892 wrong. This function is used by many different
893 parts of gdb, including normal_stop in infrun.c,
894 which uses this to print out the current PC
895 when we stepi/nexti into the middle of a source
896 line. Only the command line really wants this
897 behavior. Other UIs probably would like the
898 ability to decide for themselves if it is desired. */
899 if (opts.addressprint && mid_statement)
901 ui_out_field_core_addr (uiout, "addr",
902 gdbarch, get_frame_pc (frame));
903 ui_out_text (uiout, "\t");
906 print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
910 /* If disassemble-next-line is set to on and there is line debug
911 messages, output assembly codes for next line. */
912 if (disassemble_next_line == AUTO_BOOLEAN_TRUE)
913 do_gdb_disassembly (get_frame_arch (frame), -1, sal.pc, sal.end);
920 if (get_frame_pc_if_available (frame, &pc))
921 set_last_displayed_sal (1, sal.pspace, pc, sal.symtab, sal.line);
923 set_last_displayed_sal (0, 0, 0, 0, 0);
926 annotate_frame_end ();
928 gdb_flush (gdb_stdout);
931 /* Remember the last symtab and line we displayed, which we use e.g.
932 * as the place to put a breakpoint when the `break' command is
933 * invoked with no arguments. */
936 set_last_displayed_sal (int valid, struct program_space *pspace,
937 CORE_ADDR addr, struct symtab *symtab,
940 last_displayed_sal_valid = valid;
941 last_displayed_pspace = pspace;
942 last_displayed_addr = addr;
943 last_displayed_symtab = symtab;
944 last_displayed_line = line;
945 if (valid && pspace == NULL)
947 clear_last_displayed_sal ();
948 internal_error (__FILE__, __LINE__,
949 _("Trying to set NULL pspace."));
953 /* Forget the last sal we displayed. */
956 clear_last_displayed_sal (void)
958 last_displayed_sal_valid = 0;
959 last_displayed_pspace = 0;
960 last_displayed_addr = 0;
961 last_displayed_symtab = 0;
962 last_displayed_line = 0;
965 /* Is our record of the last sal we displayed valid? If not,
966 * the get_last_displayed_* functions will return NULL or 0, as
970 last_displayed_sal_is_valid (void)
972 return last_displayed_sal_valid;
975 /* Get the pspace of the last sal we displayed, if it's valid. */
977 struct program_space *
978 get_last_displayed_pspace (void)
980 if (last_displayed_sal_valid)
981 return last_displayed_pspace;
985 /* Get the address of the last sal we displayed, if it's valid. */
988 get_last_displayed_addr (void)
990 if (last_displayed_sal_valid)
991 return last_displayed_addr;
995 /* Get the symtab of the last sal we displayed, if it's valid. */
998 get_last_displayed_symtab (void)
1000 if (last_displayed_sal_valid)
1001 return last_displayed_symtab;
1005 /* Get the line of the last sal we displayed, if it's valid. */
1008 get_last_displayed_line (void)
1010 if (last_displayed_sal_valid)
1011 return last_displayed_line;
1015 /* Get the last sal we displayed, if it's valid. */
1018 get_last_displayed_sal (struct symtab_and_line *sal)
1020 if (last_displayed_sal_valid)
1022 sal->pspace = last_displayed_pspace;
1023 sal->pc = last_displayed_addr;
1024 sal->symtab = last_displayed_symtab;
1025 sal->line = last_displayed_line;
1037 /* Attempt to obtain the FUNNAME, FUNLANG and optionally FUNCP of the function
1038 corresponding to FRAME. FUNNAME needs to be freed by the caller. */
1041 find_frame_funname (struct frame_info *frame, char **funname,
1042 enum language *funlang, struct symbol **funcp)
1044 struct symbol *func;
1047 *funlang = language_unknown;
1051 func = get_frame_function (frame);
1054 /* In certain pathological cases, the symtabs give the wrong
1055 function (when we are in the first function in a file which
1056 is compiled without debugging symbols, the previous function
1057 is compiled with debugging symbols, and the "foo.o" symbol
1058 that is supposed to tell us where the file with debugging
1059 symbols ends has been truncated by ar because it is longer
1060 than 15 characters). This also occurs if the user uses asm()
1061 to create a function but not stabs for it (in a file compiled
1064 So look in the minimal symbol tables as well, and if it comes
1065 up with a larger address for the function use that instead.
1066 I don't think this can ever cause any problems; there
1067 shouldn't be any minimal symbols in the middle of a function;
1068 if this is ever changed many parts of GDB will need to be
1069 changed (and we'll create a find_pc_minimal_function or some
1072 struct bound_minimal_symbol msymbol;
1074 /* Don't attempt to do this for inlined functions, which do not
1075 have a corresponding minimal symbol. */
1076 if (!block_inlined_p (SYMBOL_BLOCK_VALUE (func)))
1078 = lookup_minimal_symbol_by_pc (get_frame_address_in_block (frame));
1080 memset (&msymbol, 0, sizeof (msymbol));
1082 if (msymbol.minsym != NULL
1083 && (BMSYMBOL_VALUE_ADDRESS (msymbol)
1084 > BLOCK_START (SYMBOL_BLOCK_VALUE (func))))
1086 /* We also don't know anything about the function besides
1087 its address and name. */
1089 *funname = xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym));
1090 *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1094 *funname = xstrdup (SYMBOL_PRINT_NAME (func));
1095 *funlang = SYMBOL_LANGUAGE (func);
1098 if (*funlang == language_cplus)
1100 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1101 to display the demangled name that we already have
1102 stored in the symbol table, but we stored a version
1103 with DMGL_PARAMS turned on, and here we don't want to
1104 display parameters. So remove the parameters. */
1105 char *func_only = cp_remove_params (*funname);
1110 *funname = func_only;
1117 struct bound_minimal_symbol msymbol;
1120 if (!get_frame_address_in_block_if_available (frame, &pc))
1123 msymbol = lookup_minimal_symbol_by_pc (pc);
1124 if (msymbol.minsym != NULL)
1126 *funname = xstrdup (MSYMBOL_PRINT_NAME (msymbol.minsym));
1127 *funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1133 print_frame (struct frame_info *frame, int print_level,
1134 enum print_what print_what, int print_args,
1135 struct symtab_and_line sal)
1137 struct gdbarch *gdbarch = get_frame_arch (frame);
1138 struct ui_out *uiout = current_uiout;
1139 char *funname = NULL;
1140 enum language funlang = language_unknown;
1141 struct ui_file *stb;
1142 struct cleanup *old_chain, *list_chain;
1143 struct value_print_options opts;
1144 struct symbol *func;
1148 pc_p = get_frame_pc_if_available (frame, &pc);
1150 stb = mem_fileopen ();
1151 old_chain = make_cleanup_ui_file_delete (stb);
1153 find_frame_funname (frame, &funname, &funlang, &func);
1154 make_cleanup (xfree, funname);
1156 annotate_frame_begin (print_level ? frame_relative_level (frame) : 0,
1159 list_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");
1163 ui_out_text (uiout, "#");
1164 ui_out_field_fmt_int (uiout, 2, ui_left, "level",
1165 frame_relative_level (frame));
1167 get_user_print_options (&opts);
1168 if (opts.addressprint)
1170 || frame_show_address (frame, sal)
1171 || print_what == LOC_AND_ADDRESS)
1173 annotate_frame_address ();
1175 ui_out_field_core_addr (uiout, "addr", gdbarch, pc);
1177 ui_out_field_string (uiout, "addr", "<unavailable>");
1178 annotate_frame_address_end ();
1179 ui_out_text (uiout, " in ");
1181 annotate_frame_function_name ();
1182 fprintf_symbol_filtered (stb, funname ? funname : "??",
1183 funlang, DMGL_ANSI);
1184 ui_out_field_stream (uiout, "func", stb);
1185 ui_out_wrap_hint (uiout, " ");
1186 annotate_frame_args ();
1188 ui_out_text (uiout, " (");
1191 struct gdbarch *gdbarch = get_frame_arch (frame);
1193 struct cleanup *args_list_chain;
1194 volatile struct gdb_exception e;
1196 if (gdbarch_frame_num_args_p (gdbarch))
1198 numargs = gdbarch_frame_num_args (gdbarch, frame);
1199 gdb_assert (numargs >= 0);
1204 args_list_chain = make_cleanup_ui_out_list_begin_end (uiout, "args");
1205 TRY_CATCH (e, RETURN_MASK_ERROR)
1207 print_frame_args (func, frame, numargs, gdb_stdout);
1209 /* FIXME: ARGS must be a list. If one argument is a string it
1210 will have " that will not be properly escaped. */
1211 /* Invoke ui_out_tuple_end. */
1212 do_cleanups (args_list_chain);
1215 ui_out_text (uiout, ")");
1218 const char *filename_display;
1220 filename_display = symtab_to_filename_for_display (sal.symtab);
1221 annotate_frame_source_begin ();
1222 ui_out_wrap_hint (uiout, " ");
1223 ui_out_text (uiout, " at ");
1224 annotate_frame_source_file ();
1225 ui_out_field_string (uiout, "file", filename_display);
1226 if (ui_out_is_mi_like_p (uiout))
1228 const char *fullname = symtab_to_fullname (sal.symtab);
1230 ui_out_field_string (uiout, "fullname", fullname);
1232 annotate_frame_source_file_end ();
1233 ui_out_text (uiout, ":");
1234 annotate_frame_source_line ();
1235 ui_out_field_int (uiout, "line", sal.line);
1236 annotate_frame_source_end ();
1239 if (pc_p && (funname == NULL || sal.symtab == NULL))
1241 char *lib = solib_name_from_address (get_frame_program_space (frame),
1242 get_frame_pc (frame));
1246 annotate_frame_where ();
1247 ui_out_wrap_hint (uiout, " ");
1248 ui_out_text (uiout, " from ");
1249 ui_out_field_string (uiout, "from", lib);
1253 /* do_cleanups will call ui_out_tuple_end() for us. */
1254 do_cleanups (list_chain);
1255 ui_out_text (uiout, "\n");
1256 do_cleanups (old_chain);
1260 /* Read a frame specification in whatever the appropriate format is
1261 from FRAME_EXP. Call error(), printing MESSAGE, if the
1262 specification is in any way invalid (so this function never returns
1263 NULL). When SEPECTED_P is non-NULL set its target to indicate that
1264 the default selected frame was used. */
1266 static struct frame_info *
1267 parse_frame_specification_1 (const char *frame_exp, const char *message,
1268 int *selected_frame_p)
1271 struct value *args[4];
1272 CORE_ADDR addrs[ARRAY_SIZE (args)];
1274 if (frame_exp == NULL)
1282 struct cleanup *cleanup;
1285 /* Skip leading white space, bail of EOL. */
1286 frame_exp = skip_spaces_const (frame_exp);
1290 /* Parse the argument, extract it, save it. */
1292 *p && !isspace (*p);
1294 addr_string = savestring (frame_exp, p - frame_exp);
1296 cleanup = make_cleanup (xfree, addr_string);
1298 /* NOTE: Parse and evaluate expression, but do not use
1299 functions such as parse_and_eval_long or
1300 parse_and_eval_address to also extract the value.
1301 Instead value_as_long and value_as_address are used.
1302 This avoids problems with expressions that contain
1304 if (numargs >= ARRAY_SIZE (args))
1305 error (_("Too many args in frame specification"));
1306 args[numargs++] = parse_and_eval (addr_string);
1308 do_cleanups (cleanup);
1312 /* If no args, default to the selected frame. */
1315 if (selected_frame_p != NULL)
1316 (*selected_frame_p) = 1;
1317 return get_selected_frame (message);
1320 /* None of the remaining use the selected frame. */
1321 if (selected_frame_p != NULL)
1322 (*selected_frame_p) = 0;
1324 /* Assume the single arg[0] is an integer, and try using that to
1325 select a frame relative to current. */
1328 struct frame_info *fid;
1329 int level = value_as_long (args[0]);
1331 fid = find_relative_frame (get_current_frame (), &level);
1333 /* find_relative_frame was successful. */
1337 /* Convert each value into a corresponding address. */
1341 for (i = 0; i < numargs; i++)
1342 addrs[i] = value_as_address (args[i]);
1345 /* Assume that the single arg[0] is an address, use that to identify
1346 a frame with a matching ID. Should this also accept stack/pc or
1347 stack/pc/special. */
1350 struct frame_id id = frame_id_build_wild (addrs[0]);
1351 struct frame_info *fid;
1353 /* If (s)he specifies the frame with an address, he deserves
1354 what (s)he gets. Still, give the highest one that matches.
1355 (NOTE: cagney/2004-10-29: Why highest, or outer-most, I don't
1357 for (fid = get_current_frame ();
1359 fid = get_prev_frame (fid))
1361 if (frame_id_eq (id, get_frame_id (fid)))
1363 struct frame_info *prev_frame;
1367 prev_frame = get_prev_frame (fid);
1369 || !frame_id_eq (id, get_frame_id (prev_frame)))
1378 /* We couldn't identify the frame as an existing frame, but
1379 perhaps we can create one with a single argument. */
1381 return create_new_frame (addrs[0], 0);
1382 else if (numargs == 2)
1383 return create_new_frame (addrs[0], addrs[1]);
1385 error (_("Too many args in frame specification"));
1388 static struct frame_info *
1389 parse_frame_specification (char *frame_exp)
1391 return parse_frame_specification_1 (frame_exp, NULL, NULL);
1394 /* Print verbosely the selected frame or the frame at address
1395 ADDR_EXP. Absolutely all information in the frame is printed. */
1398 frame_info (char *addr_exp, int from_tty)
1400 struct frame_info *fi;
1401 struct symtab_and_line sal;
1402 struct symbol *func;
1404 struct frame_info *calling_frame_info;
1406 const char *funname = 0;
1407 enum language funlang = language_unknown;
1408 const char *pc_regname;
1409 int selected_frame_p;
1410 struct gdbarch *gdbarch;
1411 struct cleanup *back_to = make_cleanup (null_cleanup, NULL);
1414 /* Initialize it to avoid "may be used uninitialized" warning. */
1415 CORE_ADDR caller_pc = 0;
1416 volatile struct gdb_exception ex;
1418 fi = parse_frame_specification_1 (addr_exp, "No stack.", &selected_frame_p);
1419 gdbarch = get_frame_arch (fi);
1421 /* Name of the value returned by get_frame_pc(). Per comments, "pc"
1422 is not a good name. */
1423 if (gdbarch_pc_regnum (gdbarch) >= 0)
1424 /* OK, this is weird. The gdbarch_pc_regnum hardware register's value can
1425 easily not match that of the internal value returned by
1427 pc_regname = gdbarch_register_name (gdbarch, gdbarch_pc_regnum (gdbarch));
1429 /* But then, this is weird to. Even without gdbarch_pc_regnum, an
1430 architectures will often have a hardware register called "pc",
1431 and that register's value, again, can easily not match
1435 frame_pc_p = get_frame_pc_if_available (fi, &frame_pc);
1436 find_frame_sal (fi, &sal);
1437 func = get_frame_function (fi);
1441 funname = SYMBOL_PRINT_NAME (func);
1442 funlang = SYMBOL_LANGUAGE (func);
1443 if (funlang == language_cplus)
1445 /* It seems appropriate to use SYMBOL_PRINT_NAME() here,
1446 to display the demangled name that we already have
1447 stored in the symbol table, but we stored a version
1448 with DMGL_PARAMS turned on, and here we don't want to
1449 display parameters. So remove the parameters. */
1450 char *func_only = cp_remove_params (funname);
1454 funname = func_only;
1455 make_cleanup (xfree, func_only);
1459 else if (frame_pc_p)
1461 struct bound_minimal_symbol msymbol;
1463 msymbol = lookup_minimal_symbol_by_pc (frame_pc);
1464 if (msymbol.minsym != NULL)
1466 funname = MSYMBOL_PRINT_NAME (msymbol.minsym);
1467 funlang = MSYMBOL_LANGUAGE (msymbol.minsym);
1470 calling_frame_info = get_prev_frame (fi);
1472 if (selected_frame_p && frame_relative_level (fi) >= 0)
1474 printf_filtered (_("Stack level %d, frame at "),
1475 frame_relative_level (fi));
1479 printf_filtered (_("Stack frame at "));
1481 fputs_filtered (paddress (gdbarch, get_frame_base (fi)), gdb_stdout);
1482 printf_filtered (":\n");
1483 printf_filtered (" %s = ", pc_regname);
1485 fputs_filtered (paddress (gdbarch, get_frame_pc (fi)), gdb_stdout);
1487 fputs_filtered ("<unavailable>", gdb_stdout);
1492 printf_filtered (" in ");
1493 fprintf_symbol_filtered (gdb_stdout, funname, funlang,
1494 DMGL_ANSI | DMGL_PARAMS);
1498 printf_filtered (" (%s:%d)", symtab_to_filename_for_display (sal.symtab),
1500 puts_filtered ("; ");
1502 printf_filtered ("saved %s = ", pc_regname);
1504 TRY_CATCH (ex, RETURN_MASK_ERROR)
1506 caller_pc = frame_unwind_caller_pc (fi);
1512 case NOT_AVAILABLE_ERROR:
1513 val_print_unavailable (gdb_stdout);
1515 case OPTIMIZED_OUT_ERROR:
1516 val_print_not_saved (gdb_stdout);
1519 fprintf_filtered (gdb_stdout, _("<error: %s>"), ex.message);
1524 fputs_filtered (paddress (gdbarch, caller_pc), gdb_stdout);
1525 printf_filtered ("\n");
1527 if (calling_frame_info == NULL)
1529 enum unwind_stop_reason reason;
1531 reason = get_frame_unwind_stop_reason (fi);
1532 if (reason != UNWIND_NO_REASON)
1533 printf_filtered (_(" Outermost frame: %s\n"),
1534 frame_stop_reason_string (fi));
1536 else if (get_frame_type (fi) == TAILCALL_FRAME)
1537 puts_filtered (" tail call frame");
1538 else if (get_frame_type (fi) == INLINE_FRAME)
1539 printf_filtered (" inlined into frame %d",
1540 frame_relative_level (get_prev_frame (fi)));
1543 printf_filtered (" called by frame at ");
1544 fputs_filtered (paddress (gdbarch, get_frame_base (calling_frame_info)),
1547 if (get_next_frame (fi) && calling_frame_info)
1548 puts_filtered (",");
1550 if (get_next_frame (fi))
1552 printf_filtered (" caller of frame at ");
1553 fputs_filtered (paddress (gdbarch, get_frame_base (get_next_frame (fi))),
1556 if (get_next_frame (fi) || calling_frame_info)
1557 puts_filtered ("\n");
1560 printf_filtered (" source language %s.\n",
1561 language_str (s->language));
1564 /* Address of the argument list for this frame, or 0. */
1565 CORE_ADDR arg_list = get_frame_args_address (fi);
1566 /* Number of args for this frame, or -1 if unknown. */
1570 printf_filtered (" Arglist at unknown address.\n");
1573 printf_filtered (" Arglist at ");
1574 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1575 printf_filtered (",");
1577 if (!gdbarch_frame_num_args_p (gdbarch))
1580 puts_filtered (" args: ");
1584 numargs = gdbarch_frame_num_args (gdbarch, fi);
1585 gdb_assert (numargs >= 0);
1587 puts_filtered (" no args.");
1588 else if (numargs == 1)
1589 puts_filtered (" 1 arg: ");
1591 printf_filtered (" %d args: ", numargs);
1593 print_frame_args (func, fi, numargs, gdb_stdout);
1594 puts_filtered ("\n");
1598 /* Address of the local variables for this frame, or 0. */
1599 CORE_ADDR arg_list = get_frame_locals_address (fi);
1602 printf_filtered (" Locals at unknown address,");
1605 printf_filtered (" Locals at ");
1606 fputs_filtered (paddress (gdbarch, arg_list), gdb_stdout);
1607 printf_filtered (",");
1611 /* Print as much information as possible on the location of all the
1614 enum lval_type lval;
1623 /* The sp is special; what's displayed isn't the save address, but
1624 the value of the previous frame's sp. This is a legacy thing,
1625 at one stage the frame cached the previous frame's SP instead
1626 of its address, hence it was easiest to just display the cached
1628 if (gdbarch_sp_regnum (gdbarch) >= 0)
1630 /* Find out the location of the saved stack pointer with out
1631 actually evaluating it. */
1632 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1633 &optimized, &unavailable, &lval, &addr,
1635 if (!optimized && !unavailable && lval == not_lval)
1637 enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
1638 int sp_size = register_size (gdbarch, gdbarch_sp_regnum (gdbarch));
1639 gdb_byte value[MAX_REGISTER_SIZE];
1642 frame_register_unwind (fi, gdbarch_sp_regnum (gdbarch),
1643 &optimized, &unavailable, &lval, &addr,
1645 /* NOTE: cagney/2003-05-22: This is assuming that the
1646 stack pointer was packed as an unsigned integer. That
1647 may or may not be valid. */
1648 sp = extract_unsigned_integer (value, sp_size, byte_order);
1649 printf_filtered (" Previous frame's sp is ");
1650 fputs_filtered (paddress (gdbarch, sp), gdb_stdout);
1651 printf_filtered ("\n");
1654 else if (!optimized && !unavailable && lval == lval_memory)
1656 printf_filtered (" Previous frame's sp at ");
1657 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1658 printf_filtered ("\n");
1661 else if (!optimized && !unavailable && lval == lval_register)
1663 printf_filtered (" Previous frame's sp in %s\n",
1664 gdbarch_register_name (gdbarch, realnum));
1667 /* else keep quiet. */
1671 numregs = gdbarch_num_regs (gdbarch)
1672 + gdbarch_num_pseudo_regs (gdbarch);
1673 for (i = 0; i < numregs; i++)
1674 if (i != gdbarch_sp_regnum (gdbarch)
1675 && gdbarch_register_reggroup_p (gdbarch, i, all_reggroup))
1677 /* Find out the location of the saved register without
1678 fetching the corresponding value. */
1679 frame_register_unwind (fi, i, &optimized, &unavailable,
1680 &lval, &addr, &realnum, NULL);
1681 /* For moment, only display registers that were saved on the
1683 if (!optimized && !unavailable && lval == lval_memory)
1686 puts_filtered (" Saved registers:\n ");
1688 puts_filtered (",");
1690 printf_filtered (" %s at ",
1691 gdbarch_register_name (gdbarch, i));
1692 fputs_filtered (paddress (gdbarch, addr), gdb_stdout);
1696 if (count || need_nl)
1697 puts_filtered ("\n");
1700 do_cleanups (back_to);
1703 /* Print briefly all stack frames or just the innermost COUNT_EXP
1707 backtrace_command_1 (char *count_exp, int show_locals, int no_filters,
1710 struct frame_info *fi;
1713 struct frame_info *trailing;
1714 int trailing_level, py_start = 0, py_end = 0;
1715 enum ext_lang_bt_status result = EXT_LANG_BT_ERROR;
1717 if (!target_has_stack)
1718 error (_("No stack."));
1720 /* The following code must do two things. First, it must set the
1721 variable TRAILING to the frame from which we should start
1722 printing. Second, it must set the variable count to the number
1723 of frames which we should print, or -1 if all of them. */
1724 trailing = get_current_frame ();
1729 count = parse_and_eval_long (count_exp);
1732 struct frame_info *current;
1738 while (current && count--)
1741 current = get_prev_frame (current);
1744 /* Will stop when CURRENT reaches the top of the stack.
1745 TRAILING will be COUNT below it. */
1749 trailing = get_prev_frame (trailing);
1750 current = get_prev_frame (current);
1770 /* Read in symbols for all of the frames. Need to do this in a
1771 separate pass so that "Reading in symbols for xxx" messages
1772 don't screw up the appearance of the backtrace. Also if
1773 people have strong opinions against reading symbols for
1774 backtrace this may have to be an option. */
1776 for (fi = trailing; fi != NULL && i--; fi = get_prev_frame (fi))
1781 pc = get_frame_address_in_block (fi);
1782 find_pc_sect_symtab_via_partial (pc, find_pc_mapped_section (pc));
1788 int flags = PRINT_LEVEL | PRINT_FRAME_INFO | PRINT_ARGS;
1789 enum ext_lang_frame_args arg_type;
1792 flags |= PRINT_LOCALS;
1794 if (!strcmp (print_frame_arguments, "scalars"))
1795 arg_type = CLI_SCALAR_VALUES;
1796 else if (!strcmp (print_frame_arguments, "all"))
1797 arg_type = CLI_ALL_VALUES;
1799 arg_type = NO_VALUES;
1801 result = apply_ext_lang_frame_filter (get_current_frame (), flags,
1802 arg_type, current_uiout,
1806 /* Run the inbuilt backtrace if there are no filters registered, or
1807 "no-filters" has been specified from the command. */
1808 if (no_filters || result == EXT_LANG_BT_NO_FILTERS)
1810 for (i = 0, fi = trailing; fi && count--; i++, fi = get_prev_frame (fi))
1814 /* Don't use print_stack_frame; if an error() occurs it probably
1815 means further attempts to backtrace would fail (on the other
1816 hand, perhaps the code does or could be fixed to make sure
1817 the frame->prev field gets set to NULL in that case). */
1819 print_frame_info (fi, 1, LOCATION, 1, 0);
1822 struct frame_id frame_id = get_frame_id (fi);
1824 print_frame_local_vars (fi, 1, gdb_stdout);
1826 /* print_frame_local_vars invalidates FI. */
1827 fi = frame_find_by_id (frame_id);
1831 warning (_("Unable to restore previously selected frame."));
1836 /* Save the last frame to check for error conditions. */
1840 /* If we've stopped before the end, mention that. */
1842 printf_filtered (_("(More stack frames follow...)\n"));
1844 /* If we've run out of frames, and the reason appears to be an error
1845 condition, print it. */
1846 if (fi == NULL && trailing != NULL)
1848 enum unwind_stop_reason reason;
1850 reason = get_frame_unwind_stop_reason (trailing);
1851 if (reason >= UNWIND_FIRST_ERROR)
1852 printf_filtered (_("Backtrace stopped: %s\n"),
1853 frame_stop_reason_string (trailing));
1859 backtrace_command (char *arg, int from_tty)
1861 struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
1862 int fulltrace_arg = -1, arglen = 0, argc = 0, no_filters = -1;
1870 argv = gdb_buildargv (arg);
1871 make_cleanup_freeargv (argv);
1873 for (i = 0; argv[i]; i++)
1877 for (j = 0; j < strlen (argv[i]); j++)
1878 argv[i][j] = tolower (argv[i][j]);
1880 if (no_filters < 0 && subset_compare (argv[i], "no-filters"))
1884 if (fulltrace_arg < 0 && subset_compare (argv[i], "full"))
1885 fulltrace_arg = argc;
1889 arglen += strlen (argv[i]);
1895 if (fulltrace_arg >= 0 || no_filters >= 0)
1899 arg = xmalloc (arglen + 1);
1900 make_cleanup (xfree, arg);
1902 for (i = 0; i < argc; i++)
1904 if (i != fulltrace_arg && i != no_filters)
1906 strcat (arg, argv[i]);
1916 backtrace_command_1 (arg, fulltrace_arg >= 0 /* show_locals */,
1917 no_filters >= 0 /* no frame-filters */, from_tty);
1919 do_cleanups (old_chain);
1923 backtrace_full_command (char *arg, int from_tty)
1925 backtrace_command_1 (arg, 1 /* show_locals */, 0, from_tty);
1929 /* Iterate over the local variables of a block B, calling CB with
1933 iterate_over_block_locals (const struct block *b,
1934 iterate_over_block_arg_local_vars_cb cb,
1937 struct block_iterator iter;
1940 ALL_BLOCK_SYMBOLS (b, iter, sym)
1942 switch (SYMBOL_CLASS (sym))
1948 if (SYMBOL_IS_ARGUMENT (sym))
1950 if (SYMBOL_DOMAIN (sym) == COMMON_BLOCK_DOMAIN)
1952 (*cb) (SYMBOL_PRINT_NAME (sym), sym, cb_data);
1956 /* Ignore symbols which are not locals. */
1963 /* Same, but print labels. */
1966 /* Commented out, as the code using this function has also been
1967 commented out. FIXME:brobecker/2009-01-13: Find out why the code
1968 was commented out in the first place. The discussion introducing
1969 this change (2007-12-04: Support lexical blocks and function bodies
1970 that occupy non-contiguous address ranges) did not explain why
1971 this change was made. */
1973 print_block_frame_labels (struct gdbarch *gdbarch, struct block *b,
1974 int *have_default, struct ui_file *stream)
1976 struct block_iterator iter;
1978 int values_printed = 0;
1980 ALL_BLOCK_SYMBOLS (b, iter, sym)
1982 if (strcmp (SYMBOL_LINKAGE_NAME (sym), "default") == 0)
1988 if (SYMBOL_CLASS (sym) == LOC_LABEL)
1990 struct symtab_and_line sal;
1991 struct value_print_options opts;
1993 sal = find_pc_line (SYMBOL_VALUE_ADDRESS (sym), 0);
1995 fputs_filtered (SYMBOL_PRINT_NAME (sym), stream);
1996 get_user_print_options (&opts);
1997 if (opts.addressprint)
1999 fprintf_filtered (stream, " ");
2000 fputs_filtered (paddress (gdbarch, SYMBOL_VALUE_ADDRESS (sym)),
2003 fprintf_filtered (stream, " in file %s, line %d\n",
2004 sal.symtab->filename, sal.line);
2008 return values_printed;
2012 /* Iterate over all the local variables in block B, including all its
2013 superblocks, stopping when the top-level block is reached. */
2016 iterate_over_block_local_vars (const struct block *block,
2017 iterate_over_block_arg_local_vars_cb cb,
2022 iterate_over_block_locals (block, cb, cb_data);
2023 /* After handling the function's top-level block, stop. Don't
2024 continue to its superblock, the block of per-file
2026 if (BLOCK_FUNCTION (block))
2028 block = BLOCK_SUPERBLOCK (block);
2032 /* Data to be passed around in the calls to the locals and args
2035 struct print_variable_and_value_data
2037 struct frame_id frame_id;
2039 struct ui_file *stream;
2043 /* The callback for the locals and args iterators. */
2046 do_print_variable_and_value (const char *print_name,
2050 struct print_variable_and_value_data *p = cb_data;
2051 struct frame_info *frame;
2053 frame = frame_find_by_id (p->frame_id);
2056 warning (_("Unable to restore previously selected frame."));
2060 print_variable_and_value (print_name, sym, frame, p->stream, p->num_tabs);
2062 /* print_variable_and_value invalidates FRAME. */
2065 p->values_printed = 1;
2068 /* Print all variables from the innermost up to the function block of FRAME.
2069 Print them with values to STREAM indented by NUM_TABS.
2071 This function will invalidate FRAME. */
2074 print_frame_local_vars (struct frame_info *frame, int num_tabs,
2075 struct ui_file *stream)
2077 struct print_variable_and_value_data cb_data;
2078 const struct block *block;
2081 if (!get_frame_pc_if_available (frame, &pc))
2083 fprintf_filtered (stream,
2084 _("PC unavailable, cannot determine locals.\n"));
2088 block = get_frame_block (frame, 0);
2091 fprintf_filtered (stream, "No symbol table info available.\n");
2095 cb_data.frame_id = get_frame_id (frame);
2096 cb_data.num_tabs = 4 * num_tabs;
2097 cb_data.stream = stream;
2098 cb_data.values_printed = 0;
2100 iterate_over_block_local_vars (block,
2101 do_print_variable_and_value,
2104 /* do_print_variable_and_value invalidates FRAME. */
2107 if (!cb_data.values_printed)
2108 fprintf_filtered (stream, _("No locals.\n"));
2112 locals_info (char *args, int from_tty)
2114 print_frame_local_vars (get_selected_frame (_("No frame selected.")),
2118 /* Iterate over all the argument variables in block B.
2120 Returns 1 if any argument was walked; 0 otherwise. */
2123 iterate_over_block_arg_vars (const struct block *b,
2124 iterate_over_block_arg_local_vars_cb cb,
2127 struct block_iterator iter;
2128 struct symbol *sym, *sym2;
2130 ALL_BLOCK_SYMBOLS (b, iter, sym)
2132 /* Don't worry about things which aren't arguments. */
2133 if (SYMBOL_IS_ARGUMENT (sym))
2135 /* We have to look up the symbol because arguments can have
2136 two entries (one a parameter, one a local) and the one we
2137 want is the local, which lookup_symbol will find for us.
2138 This includes gcc1 (not gcc2) on the sparc when passing a
2139 small structure and gcc2 when the argument type is float
2140 and it is passed as a double and converted to float by
2141 the prologue (in the latter case the type of the LOC_ARG
2142 symbol is double and the type of the LOC_LOCAL symbol is
2143 float). There are also LOC_ARG/LOC_REGISTER pairs which
2144 are not combined in symbol-reading. */
2146 sym2 = lookup_symbol (SYMBOL_LINKAGE_NAME (sym),
2147 b, VAR_DOMAIN, NULL);
2148 (*cb) (SYMBOL_PRINT_NAME (sym), sym2, cb_data);
2153 /* Print all argument variables of the function of FRAME.
2154 Print them with values to STREAM.
2156 This function will invalidate FRAME. */
2159 print_frame_arg_vars (struct frame_info *frame, struct ui_file *stream)
2161 struct print_variable_and_value_data cb_data;
2162 struct symbol *func;
2165 if (!get_frame_pc_if_available (frame, &pc))
2167 fprintf_filtered (stream, _("PC unavailable, cannot determine args.\n"));
2171 func = get_frame_function (frame);
2174 fprintf_filtered (stream, _("No symbol table info available.\n"));
2178 cb_data.frame_id = get_frame_id (frame);
2179 cb_data.num_tabs = 0;
2180 cb_data.stream = gdb_stdout;
2181 cb_data.values_printed = 0;
2183 iterate_over_block_arg_vars (SYMBOL_BLOCK_VALUE (func),
2184 do_print_variable_and_value, &cb_data);
2186 /* do_print_variable_and_value invalidates FRAME. */
2189 if (!cb_data.values_printed)
2190 fprintf_filtered (stream, _("No arguments.\n"));
2194 args_info (char *ignore, int from_tty)
2196 print_frame_arg_vars (get_selected_frame (_("No frame selected.")),
2202 args_plus_locals_info (char *ignore, int from_tty)
2204 args_info (ignore, from_tty);
2205 locals_info (ignore, from_tty);
2209 /* Select frame FRAME. Also print the stack frame and show the source
2210 if this is the tui version. */
2212 select_and_print_frame (struct frame_info *frame)
2214 select_frame (frame);
2216 print_stack_frame (frame, 1, SRC_AND_LOC, 1);
2219 /* Return the symbol-block in which the selected frame is executing.
2220 Can return zero under various legitimate circumstances.
2222 If ADDR_IN_BLOCK is non-zero, set *ADDR_IN_BLOCK to the relevant
2223 code address within the block returned. We use this to decide
2224 which macros are in scope. */
2226 const struct block *
2227 get_selected_block (CORE_ADDR *addr_in_block)
2229 if (!has_stack_frames ())
2232 return get_frame_block (get_selected_frame (NULL), addr_in_block);
2235 /* Find a frame a certain number of levels away from FRAME.
2236 LEVEL_OFFSET_PTR points to an int containing the number of levels.
2237 Positive means go to earlier frames (up); negative, the reverse.
2238 The int that contains the number of levels is counted toward
2239 zero as the frames for those levels are found.
2240 If the top or bottom frame is reached, that frame is returned,
2241 but the final value of *LEVEL_OFFSET_PTR is nonzero and indicates
2242 how much farther the original request asked to go. */
2245 find_relative_frame (struct frame_info *frame, int *level_offset_ptr)
2247 /* Going up is simple: just call get_prev_frame enough times or
2248 until the initial frame is reached. */
2249 while (*level_offset_ptr > 0)
2251 struct frame_info *prev = get_prev_frame (frame);
2255 (*level_offset_ptr)--;
2259 /* Going down is just as simple. */
2260 while (*level_offset_ptr < 0)
2262 struct frame_info *next = get_next_frame (frame);
2266 (*level_offset_ptr)++;
2273 /* The "select_frame" command. With no argument this is a NOP.
2274 Select the frame at level LEVEL_EXP if it is a valid level.
2275 Otherwise, treat LEVEL_EXP as an address expression and select it.
2277 See parse_frame_specification for more info on proper frame
2281 select_frame_command (char *level_exp, int from_tty)
2283 select_frame (parse_frame_specification_1 (level_exp, "No stack.", NULL));
2286 /* The "frame" command. With no argument, print the selected frame
2287 briefly. With an argument, behave like select_frame and then print
2288 the selected frame. */
2291 frame_command (char *level_exp, int from_tty)
2293 select_frame_command (level_exp, from_tty);
2294 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2297 /* The XDB Compatibility command to print the current frame. */
2300 current_frame_command (char *level_exp, int from_tty)
2302 print_stack_frame (get_selected_frame (_("No stack.")), 1, SRC_AND_LOC, 1);
2305 /* Select the frame up one or COUNT_EXP stack levels from the
2306 previously selected frame, and print it briefly. */
2309 up_silently_base (const char *count_exp)
2311 struct frame_info *frame;
2315 count = parse_and_eval_long (count_exp);
2317 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2318 if (count != 0 && count_exp == NULL)
2319 error (_("Initial frame selected; you cannot go up."));
2320 select_frame (frame);
2324 up_silently_command (char *count_exp, int from_tty)
2326 up_silently_base (count_exp);
2330 up_command (char *count_exp, int from_tty)
2332 up_silently_base (count_exp);
2333 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2336 /* Select the frame down one or COUNT_EXP stack levels from the previously
2337 selected frame, and print it briefly. */
2340 down_silently_base (const char *count_exp)
2342 struct frame_info *frame;
2346 count = -parse_and_eval_long (count_exp);
2348 frame = find_relative_frame (get_selected_frame ("No stack."), &count);
2349 if (count != 0 && count_exp == NULL)
2351 /* We only do this if COUNT_EXP is not specified. That way
2352 "down" means to really go down (and let me know if that is
2353 impossible), but "down 9999" can be used to mean go all the
2354 way down without getting an error. */
2356 error (_("Bottom (innermost) frame selected; you cannot go down."));
2359 select_frame (frame);
2363 down_silently_command (char *count_exp, int from_tty)
2365 down_silently_base (count_exp);
2369 down_command (char *count_exp, int from_tty)
2371 down_silently_base (count_exp);
2372 print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC, 1);
2377 return_command (char *retval_exp, int from_tty)
2379 /* Initialize it just to avoid a GCC false warning. */
2380 enum return_value_convention rv_conv = RETURN_VALUE_STRUCT_CONVENTION;
2381 struct frame_info *thisframe;
2382 struct gdbarch *gdbarch;
2383 struct symbol *thisfun;
2384 struct value *return_value = NULL;
2385 struct value *function = NULL;
2386 const char *query_prefix = "";
2388 thisframe = get_selected_frame ("No selected frame.");
2389 thisfun = get_frame_function (thisframe);
2390 gdbarch = get_frame_arch (thisframe);
2392 if (get_frame_type (get_current_frame ()) == INLINE_FRAME)
2393 error (_("Can not force return from an inlined function."));
2395 /* Compute the return value. If the computation triggers an error,
2396 let it bail. If the return type can't be handled, set
2397 RETURN_VALUE to NULL, and QUERY_PREFIX to an informational
2401 struct expression *retval_expr = parse_expression (retval_exp);
2402 struct cleanup *old_chain = make_cleanup (xfree, retval_expr);
2403 struct type *return_type = NULL;
2405 /* Compute the return value. Should the computation fail, this
2406 call throws an error. */
2407 return_value = evaluate_expression (retval_expr);
2409 /* Cast return value to the return type of the function. Should
2410 the cast fail, this call throws an error. */
2411 if (thisfun != NULL)
2412 return_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (thisfun));
2413 if (return_type == NULL)
2415 if (retval_expr->elts[0].opcode != UNOP_CAST
2416 && retval_expr->elts[0].opcode != UNOP_CAST_TYPE)
2417 error (_("Return value type not available for selected "
2419 "Please use an explicit cast of the value to return."));
2420 return_type = value_type (return_value);
2422 do_cleanups (old_chain);
2423 CHECK_TYPEDEF (return_type);
2424 return_value = value_cast (return_type, return_value);
2426 /* Make sure the value is fully evaluated. It may live in the
2427 stack frame we're about to pop. */
2428 if (value_lazy (return_value))
2429 value_fetch_lazy (return_value);
2431 if (thisfun != NULL)
2432 function = read_var_value (thisfun, thisframe);
2434 rv_conv = RETURN_VALUE_REGISTER_CONVENTION;
2435 if (TYPE_CODE (return_type) == TYPE_CODE_VOID)
2436 /* If the return-type is "void", don't try to find the
2437 return-value's location. However, do still evaluate the
2438 return expression so that, even when the expression result
2439 is discarded, side effects such as "return i++" still
2441 return_value = NULL;
2442 else if (thisfun != NULL)
2444 rv_conv = struct_return_convention (gdbarch, function, return_type);
2445 if (rv_conv == RETURN_VALUE_STRUCT_CONVENTION
2446 || rv_conv == RETURN_VALUE_ABI_RETURNS_ADDRESS)
2448 query_prefix = "The location at which to store the "
2449 "function's return value is unknown.\n"
2450 "If you continue, the return value "
2451 "that you specified will be ignored.\n";
2452 return_value = NULL;
2457 /* Does an interactive user really want to do this? Include
2458 information, such as how well GDB can handle the return value, in
2459 the query message. */
2464 if (thisfun == NULL)
2465 confirmed = query (_("%sMake selected stack frame return now? "),
2468 confirmed = query (_("%sMake %s return now? "), query_prefix,
2469 SYMBOL_PRINT_NAME (thisfun));
2471 error (_("Not confirmed"));
2474 /* Discard the selected frame and all frames inner-to it. */
2475 frame_pop (get_selected_frame (NULL));
2477 /* Store RETURN_VALUE in the just-returned register set. */
2478 if (return_value != NULL)
2480 struct type *return_type = value_type (return_value);
2481 struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
2483 gdb_assert (rv_conv != RETURN_VALUE_STRUCT_CONVENTION
2484 && rv_conv != RETURN_VALUE_ABI_RETURNS_ADDRESS);
2485 gdbarch_return_value (gdbarch, function, return_type,
2486 get_current_regcache (), NULL /*read*/,
2487 value_contents (return_value) /*write*/);
2490 /* If we are at the end of a call dummy now, pop the dummy frame
2492 if (get_frame_type (get_current_frame ()) == DUMMY_FRAME)
2493 frame_pop (get_current_frame ());
2495 /* If interactive, print the frame that is now current. */
2497 frame_command ("0", 1);
2499 select_frame_command ("0", 0);
2502 /* Sets the scope to input function name, provided that the function
2503 is within the current stack frame. */
2505 struct function_bounds
2507 CORE_ADDR low, high;
2511 func_command (char *arg, int from_tty)
2513 struct frame_info *frame;
2515 struct symtabs_and_lines sals;
2518 struct function_bounds *func_bounds = NULL;
2519 struct cleanup *cleanups;
2524 frame = parse_frame_specification ("0");
2525 sals = decode_line_with_current_source (arg, DECODE_LINE_FUNFIRSTLINE);
2526 cleanups = make_cleanup (xfree, sals.sals);
2527 func_bounds = (struct function_bounds *) xmalloc (
2528 sizeof (struct function_bounds) * sals.nelts);
2529 make_cleanup (xfree, func_bounds);
2530 for (i = 0; (i < sals.nelts && !found); i++)
2532 if (sals.sals[i].pspace != current_program_space)
2533 func_bounds[i].low = func_bounds[i].high = 0;
2534 else if (sals.sals[i].pc == 0
2535 || find_pc_partial_function (sals.sals[i].pc, NULL,
2536 &func_bounds[i].low,
2537 &func_bounds[i].high) == 0)
2539 func_bounds[i].low = func_bounds[i].high = 0;
2545 for (i = 0; (i < sals.nelts && !found); i++)
2546 found = (get_frame_pc (frame) >= func_bounds[i].low
2547 && get_frame_pc (frame) < func_bounds[i].high);
2551 frame = find_relative_frame (frame, &level);
2554 while (!found && level == 0);
2556 do_cleanups (cleanups);
2559 printf_filtered (_("'%s' not within current stack frame.\n"), arg);
2560 else if (frame != get_selected_frame (NULL))
2561 select_and_print_frame (frame);
2564 /* Gets the language of the current frame. */
2567 get_frame_language (void)
2569 struct frame_info *frame = deprecated_safe_get_selected_frame ();
2573 volatile struct gdb_exception ex;
2577 /* We determine the current frame language by looking up its
2578 associated symtab. To retrieve this symtab, we use the frame
2579 PC. However we cannot use the frame PC as is, because it
2580 usually points to the instruction following the "call", which
2581 is sometimes the first instruction of another function. So
2582 we rely on get_frame_address_in_block(), it provides us with
2583 a PC that is guaranteed to be inside the frame's code
2586 TRY_CATCH (ex, RETURN_MASK_ERROR)
2588 pc = get_frame_address_in_block (frame);
2592 if (ex.error != NOT_AVAILABLE_ERROR)
2593 throw_exception (ex);
2597 s = find_pc_symtab (pc);
2603 return language_unknown;
2607 /* Provide a prototype to silence -Wmissing-prototypes. */
2608 void _initialize_stack (void);
2611 _initialize_stack (void)
2613 add_com ("return", class_stack, return_command, _("\
2614 Make selected stack frame return to its caller.\n\
2615 Control remains in the debugger, but when you continue\n\
2616 execution will resume in the frame above the one now selected.\n\
2617 If an argument is given, it is an expression for the value to return."));
2619 add_com ("up", class_stack, up_command, _("\
2620 Select and print stack frame that called this one.\n\
2621 An argument says how many frames up to go."));
2622 add_com ("up-silently", class_support, up_silently_command, _("\
2623 Same as the `up' command, but does not print anything.\n\
2624 This is useful in command scripts."));
2626 add_com ("down", class_stack, down_command, _("\
2627 Select and print stack frame called by this one.\n\
2628 An argument says how many frames down to go."));
2629 add_com_alias ("do", "down", class_stack, 1);
2630 add_com_alias ("dow", "down", class_stack, 1);
2631 add_com ("down-silently", class_support, down_silently_command, _("\
2632 Same as the `down' command, but does not print anything.\n\
2633 This is useful in command scripts."));
2635 add_com ("frame", class_stack, frame_command, _("\
2636 Select and print a stack frame.\nWith no argument, \
2637 print the selected stack frame. (See also \"info frame\").\n\
2638 An argument specifies the frame to select.\n\
2639 It can be a stack frame number or the address of the frame.\n\
2640 With argument, nothing is printed if input is coming from\n\
2641 a command file or a user-defined command."));
2643 add_com_alias ("f", "frame", class_stack, 1);
2647 add_com ("L", class_stack, current_frame_command,
2648 _("Print the current stack frame.\n"));
2649 add_com_alias ("V", "frame", class_stack, 1);
2651 add_com ("select-frame", class_stack, select_frame_command, _("\
2652 Select a stack frame without printing anything.\n\
2653 An argument specifies the frame to select.\n\
2654 It can be a stack frame number or the address of the frame.\n"));
2656 add_com ("backtrace", class_stack, backtrace_command, _("\
2657 Print backtrace of all stack frames, or innermost COUNT frames.\n\
2658 With a negative argument, print outermost -COUNT frames.\nUse of the \
2659 'full' qualifier also prints the values of the local variables.\n\
2660 Use of the 'no-filters' qualifier prohibits frame filters from executing\n\
2661 on this backtrace.\n"));
2662 add_com_alias ("bt", "backtrace", class_stack, 0);
2665 add_com_alias ("t", "backtrace", class_stack, 0);
2666 add_com ("T", class_stack, backtrace_full_command, _("\
2667 Print backtrace of all stack frames, or innermost COUNT frames\n\
2668 and the values of the local variables.\n\
2669 With a negative argument, print outermost -COUNT frames.\n\
2670 Usage: T <count>\n"));
2673 add_com_alias ("where", "backtrace", class_alias, 0);
2674 add_info ("stack", backtrace_command,
2675 _("Backtrace of the stack, or innermost COUNT frames."));
2676 add_info_alias ("s", "stack", 1);
2677 add_info ("frame", frame_info,
2678 _("All about selected stack frame, or frame at ADDR."));
2679 add_info_alias ("f", "frame", 1);
2680 add_info ("locals", locals_info,
2681 _("Local variables of current stack frame."));
2682 add_info ("args", args_info,
2683 _("Argument variables of current stack frame."));
2685 add_com ("l", class_info, args_plus_locals_info,
2686 _("Argument and local variables of current stack frame."));
2689 add_com ("func", class_stack, func_command, _("\
2690 Select the stack frame that contains <func>.\n\
2691 Usage: func <name>\n"));
2693 add_setshow_enum_cmd ("frame-arguments", class_stack,
2694 print_frame_arguments_choices, &print_frame_arguments,
2695 _("Set printing of non-scalar frame arguments"),
2696 _("Show printing of non-scalar frame arguments"),
2697 NULL, NULL, NULL, &setprintlist, &showprintlist);
2699 add_setshow_boolean_cmd ("frame-arguments", no_class,
2700 &print_raw_frame_arguments, _("\
2701 Set whether to print frame arguments in raw form."), _("\
2702 Show whether to print frame arguments in raw form."), _("\
2703 If set, frame arguments are printed in raw form, bypassing any\n\
2704 pretty-printers for that value."),
2706 &setprintrawlist, &showprintrawlist);
2708 add_setshow_auto_boolean_cmd ("disassemble-next-line", class_stack,
2709 &disassemble_next_line, _("\
2710 Set whether to disassemble next source line or insn when execution stops."),
2712 Show whether to disassemble next source line or insn when execution stops."),
2714 If ON, GDB will display disassembly of the next source line, in addition\n\
2715 to displaying the source line itself. If the next source line cannot\n\
2716 be displayed (e.g., source is unavailable or there's no line info), GDB\n\
2717 will display disassembly of next instruction instead of showing the\n\
2719 If AUTO, display disassembly of next instruction only if the source line\n\
2720 cannot be displayed.\n\
2721 If OFF (which is the default), never display the disassembly of the next\n\
2724 show_disassemble_next_line,
2725 &setlist, &showlist);
2726 disassemble_next_line = AUTO_BOOLEAN_FALSE;
2728 add_setshow_enum_cmd ("entry-values", class_stack,
2729 print_entry_values_choices, &print_entry_values,
2730 _("Set printing of function arguments at function "
2732 _("Show printing of function arguments at function "
2735 GDB can sometimes determine the values of function arguments at entry,\n\
2736 in addition to their current values. This option tells GDB whether\n\
2737 to print the current value, the value at entry (marked as val@entry),\n\
2738 or both. Note that one or both of these values may be <optimized out>."),
2739 NULL, NULL, &setprintlist, &showprintlist);