Skip to content

Instantly share code, notes, and snippets.

@zldrobit
Last active June 30, 2020 07:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zldrobit/26c478018792a616492f91d4ef12565e to your computer and use it in GitHub Desktop.
Save zldrobit/26c478018792a616492f91d4ef12565e to your computer and use it in GitHub Desktop.

Push gdbserver if there isn't

adb push path_to_gdbserver /data/local/tmp/gdbserver
run-as package_name mkdir -p /data/data/package_name/gdb/bin
cat /data/local/tmp/gdbserver | run-as package_name sh -c 'cat > /data/data/package_name/gdb/bin/gdbserver'
run-as package_name chmod 700 /data/data/package_name/gdb/bin/gdbserver

Run app manually on device

am start -D -n package_name/activity_name

on host, run adb jdwp to get jdwp port of app, then forward tcp ports

adb forward tcp:2345 tcp:2345
adb forward tcp:12345 jdwp:jdwp_port

Let GDB attach to app

run on device

getpid() { ps -ef | grep package_name | grep -v grep | tr -s ' ' | cut -f2 -d' '; }
pid=$(getpid) && run-as package_name /data/data/package_name/gdb/bin/gdbserver  :2345 --attach  $pid

Start host gdb

gdb

connect to gdbserver

target remote :2345

set library and source path

set solib-absolute-prefix library_path
set solib-search-path library_path
dir source_path

set breakpoint

b function_name

continue running app

c

attach jdb to trigger app running

jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=12345

or

jdb -attach :12345
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment