mirror of https://github.com/citusdata/citus.git
34 lines
1.9 KiB
Plaintext
34 lines
1.9 KiB
Plaintext
# gdbpg.py contains scripts to nicely print the postgres datastructures
|
|
# while in a gdb session. Since the vscode debugger is based on gdb this
|
|
# actually also works when debugging with vscode. Providing nice tools
|
|
# to understand the internal datastructures we are working with.
|
|
source /root/gdbpg.py
|
|
|
|
# when debugging postgres it is convenient to _always_ have a breakpoint
|
|
# trigger when an error is logged. Because .gdbinit is sourced before gdb
|
|
# is fully attached and has the sources loaded. To make sure the breakpoint
|
|
# is added when the library is loaded we temporary set the breakpoint pending
|
|
# to on. After we have added out breakpoint we revert back to the default
|
|
# configuration for breakpoint pending.
|
|
# The breakpoint is hard to read, but at entry of the function we don't have
|
|
# the level loaded in elevel. Instead we hardcode the location where the
|
|
# level of the current error is stored. Also gdb doesn't understand the
|
|
# ERROR symbol so we hardcode this to the value of ERROR. It is very unlikely
|
|
# this value will ever change in postgres, but if it does we might need to
|
|
# find a way to conditionally load the correct breakpoint.
|
|
set breakpoint pending on
|
|
break elog.c:errfinish if errordata[errordata_stack_depth].elevel == 21
|
|
set breakpoint pending auto
|
|
|
|
echo \n
|
|
echo ----------------------------------------------------------------------------------\n
|
|
echo when attaching to a postgres backend a breakpoint will be set on elog.c:errfinish \n
|
|
echo it will only break on errors being raised in postgres \n
|
|
echo \n
|
|
echo to disable this breakpoint from vscode run `-exec disable 1` in the debug console \n
|
|
echo this assumes it's the first breakpoint loaded as it is loaded from .gdbinit \n
|
|
echo this can be verified with `-exec info break`, enabling can be done with \n
|
|
echo `-exec enable 1` \n
|
|
echo ----------------------------------------------------------------------------------\n
|
|
echo \n
|