This commit is contained in:
Ciro Santilli
2017-05-26 08:54:17 +01:00
parent 36f48aa9c7
commit 6d2bbab19c
6 changed files with 127 additions and 27 deletions

63
rungdb
View File

@@ -3,11 +3,15 @@
set -e
arch=x86_64
while getopts a: OPT; do
kgdb=false
while getopts a:k OPT; do
case "$OPT" in
a)
arch=$OPTARG
;;
k)
kgdb=true
;;
esac
done
shift "$(($OPTIND - 1))"
@@ -19,33 +23,42 @@ fi
gdb="$(pwd)/buildroot/output/host/usr/bin/${arch}-linux-gdb"
cd buildroot/output/build/linux-*.*.*/
case "$arch" in
x86_64)
# http://stackoverflow.com/questions/11408041/how-to-debug-the-linux-kernel-with-gdb-and-qemu/33203642#33203642
# http://stackoverflow.com/questions/4943857/linux-kernel-live-debugging-how-its-done-and-what-tools-are-used/42316607#42316607
# http://stackoverflow.com/questions/28607538/how-to-debug-linux-kernel-modules-with-qemu/44095831#44095831
if $kgdb; then
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/'
-ex 'target remote localhost:1234'
"
;;
arm)
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/'
"
;;
esac
else
case "$arch" in
x86_64)
# http://stackoverflow.com/questions/11408041/how-to-debug-the-linux-kernel-with-gdb-and-qemu/33203642#33203642
# http://stackoverflow.com/questions/4943857/linux-kernel-live-debugging-how-its-done-and-what-tools-are-used/42316607#42316607
# http://stackoverflow.com/questions/28607538/how-to-debug-linux-kernel-modules-with-qemu/44095831#44095831
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)
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/'
"
;;
esac
fi
eval "$cmd"