#!/system/bin/sh

# Dumps to /tmp/state by default.
# Specify "-" to dump to stdout, or any file name to dump to that file.

case $1 in
  "") echo "DUMPING STATE TO /tmp/state"; exec 1>/tmp/state ;;
  -) ;;
  *)  echo "DUMPING STATE TO $1"; exec 1>$1 ;;
esac

echo "========================================================"
echo "== dumpstate"
echo "========================================================"
echo "------ SYSTEM LOG ------"
logcat -v time -d '*:v'
echo "------ EVENT LOG ------"
logcat -b events -v time -d '*:v'
echo "------ RADIO LOG ------"
logcat -b radio -v time -d '*:v'
echo "------ KERNEL LOG ------"
dmesg
echo "------ KERNEL WAKELOCKS ------"
cat /proc/wakelocks
echo ""
echo "------ PROCESSES ------"
ps
echo "------ MEMORY INFO ------"
cat /proc/meminfo
echo "------ VIRTUAL MEMORY STATS ------"
cat /proc/vmstat
echo "------ SLAB INFO ------"
cat /proc/slabinfo
echo "------ ZONEINFO ------"
cat /proc/zoneinfo
echo "------ BINDER FAILED TRANSACTION LOG ------"
cat /proc/binder/failed_transaction_log
echo ""
echo "------ BINDER TRANSACTION LOG ------"
cat /proc/binder/transaction_log
echo ""
echo "------ BINDER TRANSACTIONS ------"
cat /proc/binder/transactions
echo ""
echo "------ BINDER STATS ------"
cat /proc/binder/stats
echo ""
for i in `ls /proc/binder/proc`; do
echo "------ BINDER PROCESS STATE: $i ------"
cat /proc/binder/proc/$i
echo ""
done
echo "------ FILESYSTEMS ------"
df

echo "========================================================"
echo "== build.prop"
echo "========================================================"

# the crash server parses key-value pairs between the VERSION INFO and
# END lines so we can aggregate crash reports based on this data.
echo "------ VERSION INFO ------"
echo "currenttime=`date`"
echo "kernel.version=`cat /proc/version`"
echo "kernel.cmdline=`cat /proc/cmdline`"
cat /system/build.prop
echo "gsm.version.ril-impl=`getprop gsm.version.ril-impl`"
echo "gsm.version.baseband=`getprop gsm.version.baseband`"
echo "gsm.imei=`getprop gsm.imei`"
echo "gsm.sim.operator.numeric=`getprop gsm.sim.operator.numeric`"
echo "gsm.operator.alpha=`getprop gsm.operator.alpha`"
echo "------ END ------"

echo "========================================================"
echo "== dumpsys"
echo "========================================================"
dumpsys

exit 0
