在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機(jī)編程>

微信ANR原理解析與解決方案

大小:0.3 MB 人氣: 2017-09-26 需要積分:1

  原理解析

  CSDN 博客專家@三精-大精wing 對(duì)于導(dǎo)致微信 ANR 的根本原因進(jìn)行了解析(以下為授權(quán)發(fā)布):

  本文目的在于學(xué)習(xí)研究Android技術(shù),若有侵犯,聯(lián)系作者將及時(shí)刪除。

  首先,微信發(fā)生ANR以后,會(huì)生成traces.txt文件。通過adb 導(dǎo)出

  adb pull /data/anr/traces.txt ~/

  其中有這么一段:

  native: #05 pc 0043a419 /data/dalvik-cache/arm/system@framewor[email protected]Java_java_util_regex_Matcher_setInputImpl__JLjava_lang_String_2II+132)

  at java.util.regex.Matcher.setInputImpl(Native method)

  at java.util.regex.Matcher.resetForInput(Matcher.java:252)

  - locked 《0x0ecefa84》 (a java.util.regex.Matcher)

  at java.util.regex.Matcher.reset(Matcher.java:208)

  at java.util.regex.Matcher.reset(Matcher.java:177)

  at java.util.regex.Matcher.《init》(Matcher.java:90)

  at java.util.regex.Pattern.matcher(Pattern.java:297)

  at com.tencent.mm.ui.widget.celltextview.g.a.o(SourceFile:95)

  at com.tencent.mm.ui.widget.celltextview.g.a.dc(SourceFile:55)

  at com.tencent.mm.ui.widget.celltextview.f.b.a(SourceFile:76)

  at com.tencent.mm.ui.widget.celltextview.d.a.Cw(SourceFile:466)

  at com.tencent.mm.ui.widget.celltextview.d.a.Cp(SourceFile:92)

  at com.tencent.mm.ui.widget.celltextview.CellTextView.onMeasure(SourceFile:102)

  at android.view.View.measure(View.java:18794)

  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)

  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)

  at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)

  at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)

  at android.view.View.measure(View.java:18794)

  發(fā)現(xiàn)是cellTextView鎖在了celltextView正則的時(shí)候。

  于是乎debug celltextview包的a類的o方法,

  發(fā)現(xiàn)一段超級(jí)復(fù)雜的正則(部分位置打碼),所以初步斷定為可能是正則時(shí)間太長(zhǎng)導(dǎo)致。于是寫了一個(gè)單元測(cè)試,來(lái)測(cè)試該正則是否有問題。

  微信ANR原理解析與解決方案

  實(shí)驗(yàn)發(fā)現(xiàn),這個(gè)正則根本不會(huì)導(dǎo)致耗時(shí)過長(zhǎng),平均耗時(shí)0-1ms。

  那也就是說明,其實(shí)不是這里的原因。

  于是將斷點(diǎn)打靠上層,到 com.tencent.mm.ui.widget.celltextview.f.b.a() 方法上

  點(diǎn)擊放過按鈕發(fā)現(xiàn)程序無(wú)限次落到這個(gè)斷點(diǎn)上,由此可知,是造成了死循環(huán),無(wú)限調(diào)用a()方法導(dǎo)致的。

  繼續(xù)深究,為什么會(huì)導(dǎo)致死循環(huán)。

  線索1:

  發(fā)現(xiàn)a()方法上面有一個(gè)判斷,會(huì)導(dǎo)致跳到cond_6最終會(huì)繼續(xù)跳到goto_4調(diào)用a()方法。

  這里有個(gè)

  add-int/lit8 v4, v4, -0x1

  其實(shí)他相當(dāng)于

  i-1

  線索2

  觀察a()方法后面,有wwk,width等屬性調(diào)用。

  微信ANR原理解析與解決方案

  結(jié)合線索

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?
      主站蜘蛛池模板: 成人在线一区二区 | 亚洲一区二区视频 | 色老二精品视频在线观看 | 中国性猛交xxxxx免费看 | 久久综合九色综合欧美播 | 欧美伦理一区 | 最新国产在线播放 | 国产精品成人观看视频国产奇米 | 特级黄毛片 | 国产精品久久久久久久久ktv | 日韩欧美亚洲一区 | 色综合久久综合欧美综合图片 | 在线国产播放 | 久久国产免费观看精品 | 操熟逼| 免费视频爱爱 | 看片在线 | 亚洲色图图片区 | 天天干天天射天天插 | 午夜精品一区二区三区在线视 | a天堂中文在线官网 | 国产成人综合久久 | 在线a免费观看最新网站 | 超黄视频在线观看 | 国产精品资源 | 精品视频卡1卡2卡3 精品视频免费看 | 99成人在线观看 | 女人张开腿让男人桶视频免费大全 | 亚洲一区二区影院 | 国产成人精品视频一区二区不卡 | 黄欧美 | 韩国三级理论在线看中文字幕 | 五月天福利视频 | 天天添天天射 | 亚洲精品视频网 | 色播五月综合 | 一级录像 | 成人在线a | 一级一级特黄女人精品毛片 | 禁网站在线观看免费视频 | 日本a级特黄三级三级三级 日本边添边爱边摸边做边爱 |