[發明專利]一種IOS運行異常的保護方法、裝置、終端設備及存儲介質有效
| 申請號: | 201811143337.2 | 申請日: | 2018-09-28 |
| 公開(公告)號: | CN109408265B | 公開(公告)日: | 2022-05-10 |
| 發明(設計)人: | 陳俊城 | 申請(專利權)人: | 廣州虎牙信息科技有限公司 |
| 主分類號: | G06F11/07 | 分類號: | G06F11/07;G06F11/30 |
| 代理公司: | 北京博思佳知識產權代理有限公司 11415 | 代理人: | 林祥 |
| 地址: | 511446 廣東省廣州市番禺區南村鎮萬博二*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 ios 運行 異常 保護 方法 裝置 終端設備 存儲 介質 | ||
本申請提供一種IOS運行異常的保護方法、裝置、終端設備及存儲介質,通過判斷是否存在執行指令的方法,若不存在執行指令的方法,將執行指令的方法名稱添加到容器中,并把指令轉發給容器,在容器中匹配所述執行指令的方法名稱,返回一個非空值,返回非空值的目的是使程序繼續運行,不會因為不存在執行指令的方法而使應用程序崩潰;獲取并記錄執行指令時所有線程的方法調用棧的信息,最后將目標信息發送到服務器,開發人員可以通過目標信息查找導致應用程序崩潰的原因。
技術領域
本申請涉及軟件領域,尤其涉及一種IOS運行異常的保護方法、裝置、終端設備及存儲介質。
背景技術
在智能終端的應用的實際開發過程中,或者用戶在智能終端中使用應用程序的時候,經常會出現應用程序崩潰的情況。
目前,操作系統上安裝的應用程序在運行過程中,如果需要執行用戶的操作指令,應用程序會調用與用戶操作指令相對應的方法來執行指令。在執行任務過程中,若出現執行錯誤或者其他錯誤,例如執行某個指令的方法不存在,則會拋出異常,操作系統會根據異常將應用程序崩潰掉,例如對應用程序進行閃退操作,許多的奔潰情況事發偶然難以重現,使得開發人員難以獲取應用程序崩潰的原因,進而導致應用程序崩潰的問題無法得到有效的解決。
發明內容
有鑒于此,本申請提供一種IOS運行異常的保護方法,以解決當應用程序出現崩潰時,開發人員不容易查找崩潰原因的問題。
根據本申請實施例的第一方面,提供一種方法,所述方法包括:
接收指令,判斷是否存在執行指令的方法;
若不存在所述執行指令的方法,在容器中添加執行指令的方法名稱和目標類的名稱,將所述指令轉發給所述容器;
在所述容器中匹配所述目標類的名稱和所述執行指令的方法名稱,所述容器向應用程序返回一個非空值;
獲取并保存執行指令時所有線程的方法調用棧,其中,所述所有線程為當前應用程序中存在的全部線程;
將目標數據發送到服務器,其中,所述目標數據包括方法調用棧、目標類的名稱、方法名稱和當前頁面的類名。
可選地,所述判斷是否存在執行指令的方法,具體包括:
調用Objc_msgSend方法在目標類的方法列表中查找與所述指令對應的所述執行指令的方法;
若存在所述執行指令的方法,則使用所述執行指令的方法執行指令。
可選地,所述調用Objc_msgSend方法在所述方法列表中查找與所述指令對應的所述執行指令的方法,包括:
若存在所述執行指令的方法,將存放所述指令的入口地址與所述執行指令的方法進行動態綁定;
objc_msgSend將其在目標類中查找到的所述執行指令的方法緩存在映射表中,所述映射表用來存放所述執行指令的方法和所述指令的入口地址的映射關系;
當再次接收到所述指令時,從所述映射表中調用所述執行指令的方法。
可選地,若不存在所述執行指令的方法,在容器中添加執行指令的方法名稱和目標類的名稱,將所述指令轉發給所述容器,具體包括:
若所述目標類中不存在所述執行指令的方法,沿著繼承體系在當前目標類的父類中繼續查找,所述目標類繼承于所述父類;
若在所述父類中找到與所述指令對應的所述執行指令的方法,則使用所述執行指令的方法執行指令并停止查找所述執行指令的方法;
若所述父類中仍不存在所述執行指令的方法,則在容器中添加執行指令的方法名稱和目標類的名稱,將所述指令轉發給所述容器。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣州虎牙信息科技有限公司,未經廣州虎牙信息科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811143337.2/2.html,轉載請聲明來源鉆瓜專利網。





