1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/usr/bin/env bash
- set -e
- arch='x86_64'
- bdfore=''
- kgdb=false
- while getopts A:a:b:k OPT; do
- case "$OPT" in
- a)
- arch="$OPTARG"
- ;;
- A)
- after="$OPTARG"
- ;;
- b)
- before="$OPTARG"
- ;;
- k)
- kgdb=true
- ;;
- esac
- done
- shift "$(($OPTIND - 1))"
- if [ "$#" -gt 0 ]; then
- brk="-ex 'break $1'"
- shift
- else
- brk=''
- fi
- buildroot_out_dir="$(pwd)/buildroot/output.${arch}~"
- gdb="${buildroot_out_dir}/host/usr/bin/${arch}-linux-gdb $before"
- cd "${buildroot_out_dir}/build/linux-custom/"
- if "$kgdb"; then
- cmd="$gdb \
- -q \
- -ex 'add-auto-load-safe-path $(pwd)' \
- -ex 'file vmlinux' \
- -ex 'target remote localhost:1234'
- "
- else
- case "$arch" in
- 'x86_64')
- cmd="$gdb \
- -q \
- -ex 'add-auto-load-safe-path $(pwd)' \
- -ex 'file vmlinux' \
- -ex 'set arch i386:x86-64:intel' \
- -ex 'target remote localhost:1234' \
- $brk \
- -ex 'continue' \
- -ex 'disconnect' \
- -ex 'set arch i386:x86-64' \
- -ex 'target remote localhost:1234' \
- -ex 'lx-symbols ../kernel_module-1.0/' \
- "
- ;;
- 'arm'|'aarch64'|'mips64')
- cmd="$gdb \
- -q \
- -ex 'add-auto-load-safe-path $(pwd)' \
- -ex 'file vmlinux' \
- -ex 'target remote localhost:1234' \
- -ex 'lx-symbols ../kernel_module-1.0/' \
- $brk \
- "
- ;;
- esac
- fi
- cmd="$cmd $after"
- echo "$cmd"
- eval "$cmd"
|