mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-23 02:05:57 +01:00
KGDB!
This commit is contained in:
63
rungdb
63
rungdb
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user