Merge "Improve gdbclient pid handling"
diff --git a/envsetup.sh b/envsetup.sh
index c758fcc..47dab37 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -776,13 +776,24 @@
PORT=":5039"
fi
- local PID
- local PROG="$3"
- if [ "$PROG" ] ; then
- if [[ "$PROG" =~ ^[0-9]+$ ]] ; then
- PID="$3"
- else
+ local PID="$3"
+ if [ "$PID" ] ; then
+ if [[ ! "$PID" =~ ^[0-9]+$ ]] ; then
PID=`pid $3`
+ if [[ ! "$PID" =~ ^[0-9]+$ ]] ; then
+ # that likely didn't work because of returning multiple processes
+ # try again, filtering by root processes (don't contain colon)
+ PID=`adb shell ps | grep $3 | grep -v ":" | awk '{print $2}'`
+ if [[ ! "$PID" =~ ^[0-9]+$ ]]
+ then
+ echo "Couldn't resolve '$3' to single PID"
+ return 1
+ else
+ echo ""
+ echo "WARNING: multiple processes matching '$3' observed, using root process"
+ echo ""
+ fi
+ fi
fi
adb forward "tcp$PORT" "tcp$PORT"
adb shell gdbserver $PORT --attach $PID &
@@ -792,7 +803,7 @@
echo "If you haven't done so already, do this first on the device:"
echo " gdbserver $PORT /system/bin/$EXE"
echo " or"
- echo " gdbserver $PORT --attach $PID"
+ echo " gdbserver $PORT --attach <PID>"
echo ""
fi