原由:项目中有人写了个位置上传的服务,其实一直没问题,后来不知道什么时候出现了很多抱怨,是开着app流量一下子跑掉了几个G,差点就要卖房子还移动话费了,很多同事哭笑不得的找上门来,后来PM解决了,我一直没时间弄明白,今天终于还原了这个大Bug,解决后才发现,要细心那,很多问题有可能测试都测不出来的,好的产品真是不容易啊,从产品到开发到测试都需要慎之又慎。我还差得远,积累吧。
解决问题的过程就是不断百度的过程啊。还是先贴几个总结的比较好的Blog吧。
1. eclipse的输出不够用的,利用adb logcat的命令输出到文件。
adb logcat -f > D:\log.txt
adb logcat TAG:D *:S -f > D:\log.txt
-f 不好用的话试试-d。要好好设置过滤,否则出来一堆没用的log,我的有时候会不成功,还是Ubunt下的grep好用。
2. DDMS的Thread查看:说实话,信息太少,我没怎么用到
3.异常信息
06-23 16:35:59.045: W/System.err(14651): android.os.NetworkOnMainThreadException 06-23 16:35:59.050: W/System.err(14651): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1148) 06-23 16:35:59.050: W/System.err(14651): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 06-23 16:35:59.050: W/System.err(14651): at libcore.io.IoBridge.connectErrno(IoBridge.java:144) 06-23 16:35:59.050: W/System.err(14651): at libcore.io.IoBridge.connect(IoBridge.java:112) 06-23 16:35:59.050: W/System.err(14651): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 06-23 16:35:59.050: W/System.err(14651): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 06-23 16:35:59.050: W/System.err(14651): at java.net.Socket.connect(Socket.java:843) 06-23 16:35:59.050: W/System.err(14651): at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) 06-23 16:35:59.050: W/System.err(14651): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144) 06-23 16:35:59.050: W/System.err(14651): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 06-23 16:35:59.050: W/System.err(14651): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 06-23 16:35:59.050: W/System.err(14651): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 06-23 16:35:59.050: W/System.err(14651): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:583) 06-23 16:35:59.050: W/System.err(14651): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:506) 06-23 16:35:59.050: W/System.err(14651): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:484) 06-23 16:35:59.055: W/System.err(14651): at com.cmcc.wepa.util.NetworkManager.httpConnectOpt(NetworkManager.java:185) 06-23 16:35:59.055: W/System.err(14651): at com.cmcc.wepa.home.UploadLocationThread.run(UploadLocationThread.java:90) 06-23 16:35:59.055: W/System.err(14651): at com.cmcc.wepa.location.LocationUploadService.upload(LocationUploadService.java:141) 06-23 16:35:59.055: W/System.err(14651): at com.cmcc.wepa.location.LocationUploadService.access$0(LocationUploadService.java:94) 06-23 16:35:59.055: W/System.err(14651): at com.cmcc.wepa.location.LocationUploadService$1.handleMessage(LocationUploadService.java:159) 06-23 16:35:59.055: W/System.err(14651): at android.os.Handler.dispatchMessage(Handler.java:102) 06-23 16:35:59.055: W/System.err(14651): at android.os.Looper.loop(Looper.java:136) 06-23 16:35:59.055: W/System.err(14651): at android.app.ActivityThread.main(ActivityThread.java:5314) 06-23 16:35:59.055: W/System.err(14651): at java.lang.reflect.Method.invokeNative(Native Method) 06-23 16:35:59.055: W/System.err(14651): at java.lang.reflect.Method.invoke(Method.java:515) 06-23 16:35:59.055: W/System.err(14651): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862) 06-23 16:35:59.055: W/System.err(14651): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:678) 06-23 16:35:59.055: W/System.err(14651): at dalvik.system.NativeStart.main(Native Method)