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模式,則可以正常調試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章