【问题标题】:How to debug an android application started from 'adb shell am start -D '?如何调试从“adb shell am start -D”开始的 android 应用程序?
【发布时间】:2013-12-10 21:34:04
【问题描述】:

我需要调试一个已经安装在手机上的安卓应用程序。我能够在调试模式下启动应用程序,但我无法连接到使用 JDWP 的进程。我尝试了两种不同的方法,但都失败了。 (见下文)


命令行尝试

1- 启动应用程序

[...]sdk\platform-tools>adb -d shell am start -D -n "package/package.SomeActivity"

应用程序启动并显示一个警报“/!\Waiting for debugger”。

2- 打开一个 JDWP 端口

[...]sdk\platform-tools>adb forward tcp:8000 jdwp:7602

3- 尝试使用 jdb 连接

[...]sdk\platform-tools>jdb -attach 127.0.0.1:8000
    java.io.IOException: shmemBase_attach failed:
        at com.sun.tools.jdi.SharedMemoryTransportService.attach0(Native Method)
        at com.sun.tools.jdi.SharedMemoryTransportService.attach(SharedMemoryTransportService.java:108)
        at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:116)
        at com.sun.tools.jdi.SharedMemoryAttachingConnector.attach(SharedMemoryAttachingConnector.java:63)
        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:1066)
Fatal error:
Unable to attach to target VM.

IntelliJ 尝试

我已将本地项目配置为启动默认 Activity 并取消选中“部署应用程序”。

我也让应用程序启动时出现相同的警报,但不幸的是 IDE 没有连接到远程进程。

Target device: 42f7cc14e2acbfab
Launching application: ********/********.SomeActivity.
DEVICE SHELL COMMAND: am start -D -n "********/********.SomeActivity"
Starting: Intent { cmp=********/********.SomeActivity }

Waiting for process: ********

【问题讨论】:

    标签: android debugging jdwp


    【解决方案1】:
    1. root 手机
    2. 打开一个根shell

      (computer)$ adb shell 
      (phone)$ su
      (phone)#
      
    3. 运行am 命令

      # am start -D -n "package/package.SomeActivity"
      

    这样您就可以调试任何应用程序,无论它是否设置了android:debuggable

    【讨论】:

    • 我将不得不尽快尝试。这对于在没有源代码的情况下调试应用程序非常有用。
    • 如果我输入adb jdwp 命令,它什么也没有返回,所以我无法连接调试器
    • 这一切都不适合我。让我们看看 ig Google 可以帮助我issuetracker.google.com/issues/189615411
    【解决方案2】:

    已部署的应用程序配置了 debuggable 属性设置为 false。手机上的提示简直是误导。

    【讨论】:

    • 如果我使用这篇文章中的命令运行应用程序并且当我运行adb jdwp 时它什么也不返回。
    • @WSS 您很可能无法访问调试端口。打开一个新问题。 Android 的工具发生了很大变化。
    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 2022-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 2011-11-16
    相关资源
    最近更新 更多