| # Copyright (C) 2001-2019 Free Software Foundation, Inc. |
| # |
| # This file is part of GCC. |
| # |
| # GCC is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 3, or (at your option) |
| # any later version. |
| # |
| # GCC is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with GCC; see the file COPYING3. If not see |
| # <http://www.gnu.org/licenses/>. |
| |
| define pp |
| call debug ($) |
| end |
| |
| document pp |
| Print a representation of the GCC data structure that is $. |
| Works only when an inferior is executing. |
| end |
| |
| define pr |
| set debug_rtx ($) |
| end |
| |
| document pr |
| Print the full structure of the rtx that is $. |
| Works only when an inferior is executing. |
| end |
| |
| define prl |
| set debug_rtx_list ($, debug_rtx_count) |
| end |
| |
| document prl |
| Print the full structure of all rtx insns beginning at $. |
| Works only when an inferior is executing. |
| Uses variable debug_rtx_count to control number of insns printed: |
| debug_rtx_count > 0: print from $ on. |
| debug_rtx_count < 0: print a window around $. |
| |
| There is also debug_rtx_find (rtx, uid) that will scan a list for UID and print |
| it using debug_rtx_list. Usage example: set $foo=debug_rtx_find(first, 42) |
| end |
| |
| define pt |
| set debug_tree ($) |
| end |
| |
| document pt |
| Print the full structure of the tree that is $. |
| Works only when an inferior is executing. |
| end |
| |
| define pct |
| set debug_c_tree ($) |
| end |
| |
| document pct |
| Print the tree that is $ in C syntax. |
| Works only when an inferior is executing. |
| end |
| |
| define pgg |
| set debug_gimple_stmt ($) |
| end |
| |
| document pgg |
| Print the Gimple statement that is $ in C syntax. |
| Works only when an inferior is executing. |
| end |
| |
| define pgq |
| set debug_gimple_seq ($) |
| end |
| |
| document pgq |
| Print the Gimple sequence that is $ in C syntax. |
| Works only when an inferior is executing. |
| end |
| |
| define pgs |
| set debug_generic_stmt ($) |
| end |
| |
| document pgs |
| Print the statement that is $ in C syntax. |
| Works only when an inferior is executing. |
| end |
| |
| define pge |
| set debug_generic_expr ($) |
| end |
| |
| document pge |
| Print the expression that is $ in C syntax. |
| Works only when an inferior is executing. |
| end |
| |
| define pmz |
| set mpz_out_str(stderr, 10, $) |
| end |
| |
| document pmz |
| Print the mpz value that is $ |
| Works only when an inferior is executing. |
| end |
| |
| define ptc |
| output (enum tree_code) $.common.code |
| echo \n |
| end |
| |
| document ptc |
| Print the tree-code of the tree node that is $. |
| end |
| |
| define pdn |
| output $.decl_minimal.name->identifier.id.str |
| echo \n |
| end |
| |
| document pdn |
| Print the name of the decl-node that is $. |
| end |
| |
| define ptn |
| output $.type.name->decl_minimal.name->identifier.id.str |
| echo \n |
| end |
| |
| document ptn |
| Print the name of the type-node that is $. |
| end |
| |
| define pdd |
| set debug_dwarf_die ($) |
| end |
| |
| document pdd |
| Print the dw_die_ref that is in $. |
| end |
| |
| define prc |
| output (enum rtx_code) $.code |
| echo \ ( |
| output $.mode |
| echo )\n |
| end |
| |
| document prc |
| Print the rtx-code and machine mode of the rtx that is $. |
| end |
| |
| define pi |
| print $.u.fld[0].rt_rtx@7 |
| end |
| |
| document pi |
| Print the fields of an instruction that is $. |
| end |
| |
| define pbs |
| set print_binding_stack () |
| end |
| |
| document pbs |
| In cc1plus, print the current binding stack, frame by frame, up to and |
| including the global binding level. |
| end |
| |
| define pbm |
| set bitmap_print (stderr, $, "", "\n") |
| end |
| |
| document pbm |
| Dump the bitmap that is in $ as a comma-separated list of numbers. |
| end |
| |
| define pel |
| output expand_location ($) |
| echo \n |
| end |
| |
| document pel |
| Print expanded location of $. |
| end |
| |
| define pcfun |
| output debug_function (cfun ? cfun->decl : current_function_decl, 0) |
| echo \n |
| end |
| |
| document pcfun |
| Print current function. |
| end |
| |
| define break-on-diagnostic |
| break diagnostic_show_locus |
| end |
| |
| document break-on-diagnostic |
| Put a breakpoint on diagnostic_show_locus, called whenever a diagnostic |
| is emitted (as opposed to those warnings that are suppressed by |
| command-line options). |
| end |
| |
| # Define some macros helpful to gdb when it is expanding macros. |
| macro define __FILE__ "gdb" |
| macro define __LINE__ 1 |
| macro define __FUNCTION__ "gdb" |
| macro define __null 0 |
| macro define input_line expand_location(input_location).line |
| macro define input_filename expand_location(input_location).file |
| |
| # Remember previous pagination status and turn it off, so that |
| # the messages for skip commands don't require pagination. |
| python __gcc_prev_pagination=gdb.parameter("pagination") |
| set pagination off |
| |
| # Gracefully handle aborts in functions used from gdb. |
| set unwindonsignal on |
| |
| # Put breakpoints at exit and fancy_abort in case abort is mapped |
| # to either fprintf/exit or fancy_abort. |
| b fancy_abort |
| |
| # Put a breakpoint on internal_error to help with debugging ICEs. |
| b internal_error |
| |
| set complaints 0 |
| # Don't let abort actually run, as it will make |
| # stdio stop working and therefore the `pr' command above as well. |
| # Put this last because gcc does not reference it any more unless |
| # USE_SYSTEM_ABORT is defined, so gdb may complain and bail out. |
| b exit |
| b abort |
| |
| # Disable strict type checking. This allows developers to (for example) |
| # make inferior calls without casting absolute address to a suitable |
| # pointer type. |
| set check type off |
| |
| # Skip all inline functions in tree.h. |
| # These are used in accessor macros. |
| # Note that this is added at the end because older gdb versions |
| # do not understand the 'skip' command. |
| # See https://sourceware.org/gdb/current/onlinedocs/gdb/Skipping-Over-Functions-and-Files.html |
| skip file tree.h |
| |
| # Also skip inline functions in is-a.h. |
| skip file is-a.h |
| |
| # And line-map.h. |
| skip file line-map.h |
| |
| # And timevar.h. |
| skip file timevar.h |
| |
| # Likewise, skip various inline functions in rtl.h. |
| skip rtx_expr_list::next |
| skip rtx_expr_list::element |
| skip rtx_insn_list::next |
| skip rtx_insn_list::insn |
| skip rtx_sequence::len |
| skip rtx_sequence::element |
| skip rtx_sequence::insn |
| skip INSN_UID |
| skip PREV_INSN |
| skip SET_PREV_INSN |
| skip NEXT_INSN |
| skip SET_NEXT_INSN |
| skip BLOCK_FOR_INSN |
| skip PATTERN |
| skip INSN_LOCATION |
| skip INSN_HAS_LOCATION |
| skip JUMP_LABEL_AS_INSN |
| |
| # Restore pagination to the previous state. |
| python if __gcc_prev_pagination: gdb.execute("set pagination on") |