其他分享
首页 > 其他分享> > 连接到Android设备时shmemBase_attach失败

连接到Android设备时shmemBase_attach失败

作者:互联网

我正在尝试将计算机上的jdb连接到我的Android设备上的进程(实际上是任何进程),但是它根本不起作用.

因此,我使用的命令直接来自Google ADB文档.首先我做

adb forward tcp:3456 jdwp:pid

然后在那之后我尝试使用jdb尝试进行连接

jdb -attach emulatorIP:3456

但是我收到以下错误:

java.io.IOException: shmemBase_attach failed: The system cannot find the file specified

    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.

编辑:我有更多的线索,但我距离实际的解决方案还差得远.

尽管出于所有原因,JDB -attach仍默认使用共享内存方法进行调试,尽管所有文档都坚持将hostname:port指定为-attach参数将强制其使用套接字进行远程调试.要强制使用它,请使用ykw的答案提供的命令,但是由于某些连接错误,它表面上无论如何还是失败.

经过进一步调查,似乎JDB和ADB在某些未知资源上相互冲突,从而导致各种套接字连接错误.我当前的解决方法是完全关闭ADB并运行JDB,然后在处理完JDB之后,使ADB重新联机.无论如何,这是不可接受的,我希望这能帮助具有更深入知识的人找出问题所在!

解决方法:

尝试退出Android Studio.

即使您的项目不在,其ADB仍在运行.这是一个示例,其中我退出Android Studio,运行ADB,在设备中启动我的应用程序,然后再次运行ADB以查看新的进程ID,转发端口并最终连接JDB:

$adb -d jdwp
* daemon not running. starting it now at tcp:5037 *
* daemon started successfully *
28462
^C
$adb -d jdwp
28462
1939
^C
$adb -d forward tcp:7777 jdwp:1939
$jdb -attach localhost:7777 -sourcepath ./src
Set uncaught java.lang.Throwable
Set deferred uncaught java.lang.Throwable
Initializing jdb ...
> 

您还可以在Android Studio中打开和关闭ADB:

Android Studio->工具-> Android->启用ADB集成

禁用ADB集成后,您可以照常从控制台运行ADB.您还可以使用以下方法控制和后台运行ADB守护程序:

adb kill-server
adb start-server

我在此上浪费了几个小时,因此它确实需要更好的文档.我也想知道如何同时运行Android Studio调试器和JDB,以便在逐步调试器时可以分析所有方法调用(因为内置的Android Studio监视器跟踪不会显示连续的方法调用带参数):

http://mybrainoncode.com/blog/2013/11/03/debugging-android-with-jdb/

https://teaspoon-consulting.com/articles/tracing-java-method-calls.html

标签:android,jdb
来源: https://codeday.me/bug/20191010/1884771.html