首页 > 其他分享 >安卓 smali启动就附加调试 的正确步骤

安卓 smali启动就附加调试 的正确步骤

时间:2022-11-24 14:42:55浏览次数:65  
标签:java sun 安卓 8700 tools jdi com smali 调试


网上的教程龙鱼混杂,如果没有搞清楚他们之间的关系就会翻车。
首先此教程只针对想一运行就要调试的,其他的没有那么麻烦。

  1. 首先让应用可以被调试,如 root, 或者 debuggable=true
  2. 让此应用进入等待调试断点状态​​start for debugger​​​ 输入​​adb shell am start -D -n cn.qssq66.robot/cn.qssq666.robot.MainActivity​
  3. 用​​as attach process​​​下断点,比如​​onCreate​
  4. 打开ddms获取调试端口
    也就是​​​sdk\tools\monitor.bat​

  5. 安卓 smali启动就附加调试 的正确步骤_debug

  6. image.png

    绿色代表已经进入调试状态了,红色代表程序处于​​​wait for debugger​​​状态,这里只截图了绿色的,
    其中8700代表选中的进程的调试端口可以是8700也可以是 /左边的,比如图中的​​​9605/8700​
  7. 执行恢复命令​​jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700​​ 这里的8700 也可以不写8700,可以选择要调试的进程端口也是可以的,否则你选择了哪个进程哪个就是8700那么调试的就是哪个

结果




安卓 smali启动就附加调试 的正确步骤_linux_02


image.png


C:\Users\Administrator>jdb  -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
设置未捕获的java.lang.Throwable
设置延迟的未捕获的java.lang.Throwable
正在初始化jdb...

上图意味着成功



安卓 smali启动就附加调试 的正确步骤_多线程_03


image.png


正在初始化jdb...
>
>
>
应用程序已断开连接

C:\Users\Administrator>jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at com.sun.tools.jdi.SocketTransportService.handshake(SocketTransportService.java:130)
at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:232)
at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116
at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:90)
at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:519)
at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:328)
at com.sun.tools.example.debug.tty.Env.init(Env.java:63)
at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1082)

致命错误:
无法附加到目标 VM。

上图意味着失败

​https://www.aliyun.com/jiaocheng/91652.html​​​​https://stackoverflow.com/questions/37670487/shmembase-attach-failed-when-connecting-to-android-device​

标签:java,sun,安卓,8700,tools,jdi,com,smali,调试
From: https://blog.51cto.com/u_15458814/5883885

相关文章