aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/%HOME%/.bash_utils/cxx.sh
diff options
context:
space:
mode:
Diffstat (limited to '%HOME%/.bash_utils/cxx.sh')
-rw-r--r--%HOME%/.bash_utils/cxx.sh37
1 files changed, 37 insertions, 0 deletions
diff --git a/%HOME%/.bash_utils/cxx.sh b/%HOME%/.bash_utils/cxx.sh
index 402b4cc..cb55a7f 100644
--- a/%HOME%/.bash_utils/cxx.sh
+++ b/%HOME%/.bash_utils/cxx.sh
@@ -162,3 +162,40 @@ runcxx() (
runc_compiler="${runcxx_compiler:-g++}" \
runc "$@"
)
+
+apport_gdb() (
+ set -o errexit -o nounset -o pipefail
+
+ if [ "$#" -ne 1 ]; then
+ echo "usage: ${FUNCNAME[0]} BINARY" >&2
+ return 1
+ fi
+
+ local binary_path="$1"
+ binary_path="$( readlink --canonicalize-missing -- "$binary_path" )"
+
+ local crash_path
+ crash_path="$( str_replace "$binary_path" '/' '_' )"
+ crash_path="$crash_path.$UID.crash"
+ crash_path="/var/crash/$crash_path"
+
+ if [ ! -r "$crash_path" ]; then
+ echo "${FUNCNAME[0]}: $crash_path doesn't exist or isn't readable" >&2
+ return 1
+ fi
+
+ local crash_dir
+ crash_dir="$( mktemp --directory )"
+
+ local rm_crash_dir
+ rm_crash_dir="$( printf -- 'rm -rf -- %q' "$crash_dir" )"
+
+ trap "$rm_crash_dir" EXIT
+
+ apport-unpack "$crash_path" "$crash_dir"
+ gdb "$binary_path" "$crash_dir/CoreDump"
+)
+
+agdb() {
+ apport_gdb "$@"
+}