Android Studio无法单点调试Connected to the target VM, address 'localhost8601', transport 'socket'

在windows上用AndroidStudio开发android时遇到了一个问题:
在XXX-java中报出提示:

Connected to the target VM, address: 'localhost:8601', transport: 'socket'

然后app进入等待状态然后黑屏了,无法进入调试。

解决1:

端口被占用,需要杀死对应进程,但实际上该端口是AndroidStudio在使用。如果同时用Eclipse和AndroidStudio同时进行android开发倒有这个可能,然而我只在使用AndroidStudio,故而此方法不适用。(确保adb是AndroidStudio的adb)

解决2:

in android studio: tools->android->enable adb integration(this should be checked) uncheck this, then check again. this solved me this problem. (it restarts the adb integration)。该方法来自stackoverflow,然而我试了之后还是没有用。

启示:

除了以上两种方法,网上能找到的方法我几乎都试过了一遍,然而并没有什么用。
虽然在尝试的过程中我也有思考,但是一直没法定位问题,尝试网上的方法感觉就是死马当活马医,急病乱投医。“知其然而不知其所以然”是经验主义奉行的,而这种方法不一定适用所有的场景,所以必须探究其所以然。

过程:

1、我首先摆出我的疑惑“这个项目名-java”是个什么东西,能不能禁用掉,然后一直在attach debugger to process中徘徊,但是没有效果。
2、然后我和能够正常调试的android app项目比较,确实这个“项目名-java”是个多出来的东西,但是不知道这是什么啊,想起项目中是有用到ndk的,于是合理猜想这是给ndk用的。
3、猜想后实践,在Project Structure的Build Type的jni debugger中设为true,然后开始调试,然后……没有用。
4、兜兜转转中看到Debug的Edit Configuration中有一个Debugger中有一个Build Type默认为Auto,于是改成Java就可以成功调试了。
5、一开始推理为其原因为,应该是开启了Debugger的Auto模式,那么Android Studio就同时开启了android的java调试以及ndk的native调试,而这两个使用的端口是一样的,于是出现了端口占用,因此每次只能进行Java调试或者ndk调试,不能用Auto模式。
6、但是项目中并没有实际的native的C/C++代码,只有一些.so的库文件。所以并没有定位出具体问题,但是肯定是跟ndk有关的。而自己新建Include C++的Android默认项目是可以正常调试的,但是项目结构上就有所不同了。所以大概是项目代码或者项目设置上哪里有问题吧。以后有时间再研究ndk开发的问题吧。

最终解决办法:Run->Edit Configuration->Debugger->Build Type设置为Java模式,则可以正常调试。

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值