rungdb 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/usr/bin/env bash
  2. set -e
  3. arch='x86_64'
  4. bdfore=''
  5. kgdb=false
  6. while getopts A:a:b:k OPT; do
  7. case "$OPT" in
  8. a)
  9. arch="$OPTARG"
  10. ;;
  11. A)
  12. after="$OPTARG"
  13. ;;
  14. b)
  15. before="$OPTARG"
  16. ;;
  17. k)
  18. kgdb=true
  19. ;;
  20. esac
  21. done
  22. shift "$(($OPTIND - 1))"
  23. if [ "$#" -gt 0 ]; then
  24. brk="-ex 'break $1'"
  25. shift
  26. else
  27. brk=''
  28. fi
  29. buildroot_out_dir="$(pwd)/buildroot/output.${arch}~"
  30. gdb="${buildroot_out_dir}/host/usr/bin/${arch}-linux-gdb $before"
  31. cd "${buildroot_out_dir}/build/linux-custom/"
  32. if "$kgdb"; then
  33. cmd="$gdb \
  34. -q \
  35. -ex 'add-auto-load-safe-path $(pwd)' \
  36. -ex 'file vmlinux' \
  37. -ex 'target remote localhost:1234'
  38. "
  39. else
  40. case "$arch" in
  41. 'x86_64')
  42. cmd="$gdb \
  43. -q \
  44. -ex 'add-auto-load-safe-path $(pwd)' \
  45. -ex 'file vmlinux' \
  46. -ex 'set arch i386:x86-64:intel' \
  47. -ex 'target remote localhost:1234' \
  48. $brk \
  49. -ex 'continue' \
  50. -ex 'disconnect' \
  51. -ex 'set arch i386:x86-64' \
  52. -ex 'target remote localhost:1234' \
  53. -ex 'lx-symbols ../kernel_module-1.0/' \
  54. "
  55. ;;
  56. 'arm'|'aarch64'|'mips64')
  57. cmd="$gdb \
  58. -q \
  59. -ex 'add-auto-load-safe-path $(pwd)' \
  60. -ex 'file vmlinux' \
  61. -ex 'target remote localhost:1234' \
  62. -ex 'lx-symbols ../kernel_module-1.0/' \
  63. $brk \
  64. "
  65. ;;
  66. esac
  67. fi
  68. cmd="$cmd $after"
  69. echo "$cmd"
  70. eval "$cmd"