stackdump 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. case "$1" in
  3. ""|help)
  4. echo "Usage 1: ${0##*/} [server-type] [sql]"
  5. echo Server type can be map, login, or char. Examples:
  6. echo "$ ./${0##*/} map"
  7. echo "$ ./${0##*/} login sql"
  8. echo
  9. echo "Usage 2: ${0##*/} [server-type] [number]"
  10. echo Server type has to be the full name of the file. Examples:
  11. echo "$ ./${0##*/} map-server 0001"
  12. echo "$ ./${0##*/} login-server_sql 0002"
  13. echo
  14. echo Note: Dump files inside /log will also be scanned.
  15. exit
  16. ;;
  17. map|char|login)
  18. # Check for SQL postfix
  19. if [ "$2" = "sql" ]; then
  20. sql="_sql"
  21. fi
  22. STACK="$1-server$sql.exe.stackdump"
  23. SERVER="$1-server$sql.exe"
  24. ;;
  25. *)
  26. STACK="$1$2.stackdump"
  27. SERVER="$1.exe"
  28. ;;
  29. esac
  30. # Check if file exists.
  31. # Try looking under '/log' if it isn't
  32. if [ ! -e $STACK ]; then
  33. if [ -e log/$STACK ]; then
  34. STACK=log/$STACK
  35. else
  36. echo Error: $STACK not found!
  37. exit
  38. fi
  39. fi
  40. # Finally dump the backtrace
  41. awk '/^[0-9]/{print $2}' $STACK | addr2line -f -e $SERVER