JP2019525275A - 異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体 - Google Patents

異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体 Download PDF

Info

Publication number
JP2019525275A
JP2019525275A JP2018553347A JP2018553347A JP2019525275A JP 2019525275 A JP2019525275 A JP 2019525275A JP 2018553347 A JP2018553347 A JP 2018553347A JP 2018553347 A JP2018553347 A JP 2018553347A JP 2019525275 A JP2019525275 A JP 2019525275A
Authority
JP
Japan
Prior art keywords
abnormal
stack information
abnormal stack
information
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018553347A
Other languages
English (en)
Other versions
JP6648306B2 (ja
Inventor
遠 杜
遠 杜
龍飛 叶
龍飛 叶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Publication of JP2019525275A publication Critical patent/JP2019525275A/ja
Application granted granted Critical
Publication of JP6648306B2 publication Critical patent/JP6648306B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Retry When Errors Occur (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本発明は従来技術ではアプリケーションプログラムにおける異常スタック情報をタイムリーに取得してアップロードするのが困難であるという技術的課題を解決する。本願発明は、異常スタック情報取得方法を開示する。当該方法は、アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得することと、前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取ることと、前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含む。本願発明はさらに、異常スタック情報取得装置及びコンピュータ読み取り可能な記憶媒体を提供する。

Description

「関連出願の相互参照」
本願は、パリ条約により2017年06月12日に提出した「異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体」と題する中国特許出願(出願番号CN201710440288.8)の優先権を主張し、その全体内容を参照し、ここに援用する。
本願発明は、コンピュータ技術分野に関し、詳しく言えば、異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体に関する。
従来、アプリケーションのプログラム設計に不具合が存在すると、ユーザが利用する過程で、アプリケーションが動作異常により潰れてクラッシュし、正常に使用できなくなることがある。したがって、アプリケーション開発者にとっては、アプリケーションに異常が発生するときに生成した異常スタック情報を取得し、そしてアプリケーションに発生する異常問題のコードについて、その位置を特定し分析する必要がある。
従来の異常スタック情報取得方法としては一般的に、アプリケーションに異常が発生してクラッシュした後、プログラムが再起動するときに、ローカルから異常スタック情報を取得してアップロードする。しかしながら、このような処理方法には、アプリケーションに異常が発生してクラッシュした後、ユーザがアプリケーションを再起動させないとアップロードできないという問題点があった。
本願発明は、従来技術ではアプリケーションプログラムにおける異常スタック情報をタイムリーに取得してアップロードするのが困難であるという技術的課題を解決するために、異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体を提供することを目的とする。
上記の目的を達成するために、本願発明は、異常スタック情報取得方法を提供する。当該方法は、
アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得することと、
前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取ることと、
前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含む。
場合によっては、アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得する前記ステップは、
前記アイテムが動作する過程で所定の異常信号を検出したとき、前記アイテムの動作するオペレーティングシステムのバージョン情報を確定することと、
前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼びして実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成することと、を含む。
場合によっては、オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成する前記ステップは、
前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得することと、
前記アドレス情報に基づき異常スタックデータを取得し、検出した前記異常信号の信号タイプを取得することと、
前記信号タイプと前記異常スタックデータとを組み合わせて前記第1の異常スタック情報を生成することと、を含む。
場合によっては、前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する前記ステップは、
記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換することと、
前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含む。
また、上記の目的を達成するために、本願発明はさらに、異常スタック情報取得装置を提供する。当該装置は、記憶手段と、処理手段と、前記記憶手段に記憶されており、且つ前記処理手段で実行可能な異常スタック情報取得プログラムとを含み、前記異常スタック情報取得プログラムが前記処理手段により実行されるとき、
アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得するステップと、
前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取るステップと、
前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了するステップと、を実現する。
場合によっては、アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得する前記ステップは、
前記アイテムが動作する過程で所定の異常信号を検出したとき、前記アイテムの動作するオペレーティングシステムのバージョン情報を確定することと、
前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成することと、を含む。
場合によっては、オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成する前記ステップは、
前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得することと、
前記アドレス情報に基づき異常スタックデータを取得し、検出した前記異常信号の信号タイプを取得することと、
前記信号タイプと前記異常スタックデータとを組み合わせて前記第1の異常スタック情報を生成することと、を含む。
場合によっては、前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する前記ステップは、
記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換することと、
前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含む。
場合によっては、記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換する前記ステップは、
情報復元スクリプトを起動し、前記情報復元スクリプトに基づき、前記第1の異常スタック情報における関数名を順次前記シンボルテーブルにおける関数名と1つずつマッチングし、前記第1の異常スタック情報における関数名に対応するファイル名及び行番号を取得することと、
取得したファイル名及び行番号を元の第1の異常スタック情報に追加し、前記サーバが読み取り可能な第3の異常スタック情報を生成することと、を含む。
また、上記の目的を達成するために、本願発明はさらに、コンピュータ読み取り可能な記憶媒体を提供する。前記コンピュータ読み取り可能な記憶媒体に異常スタック情報取得プログラムが記憶されており、前記異常スタック情報取得プログラムが処理手段により実行されるとき、
アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得するステップと、
前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取るステップと、
前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了するステップと、を実現する。
本願発明に係る異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体は、アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得し、且つ異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取り、前記native層及びアプリケーション層の異常スタック情報を組み合わせてサーバに報告し、且つ報告を完了した後、当該アイテムを終了するものである。異常を検出した後、直接アイテムを強制終了することを回避し、また予め定義した異常信号処理関数によりnative層の第1の異常スタック情報を含む完全な異常スタック情報をタイムリーに取得しサーバにアップロードすることができるため、異常の発生について全面的に監視し、異常スタック情報をリアルタイムに報告することができ、開発者は、アプリケーションの異常をタイムリーに発見し、異常の位置を迅速に特定しトラブルを解決することができる。
本願発明による異常スタック情報取得方法の第1の実施例のフローチャートである。 本願発明による異常スタック情報取得方法の第2の実施例におけるステップS30の詳細を示すフローチャートである。 本願発明による異常スタック情報取得装置の好適な実施例の概略図である。 本願発明による異常スタック情報取得装置における異常スタック情報取得プログラムの機能モジュールを示す図である。
以下に本願発明の目的の達成、機能上の特徴及び利点について、実施例及び図面を用いてさらに説明する。
なお、挙げられる具体例は、本願発明の範囲を限定するためではなく、解釈の目的だけで用いられる。
本願発明は、異常スタック情報取得方法を提供する。図1は、本願発明による異常スタック情報取得方法の第1の実施例のフローチャートを示す。同図から分かるように、当該方法は、1つの装置により実行され、当該装置は、ソフトウェア及び/又はハードウェアで実現されてもよい。
本実施例では、当該異常スタック情報取得方法は、ステップS10と、ステップS20と、ステップS30とを含む。
ステップS10:アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得する。
本実施例では、アイテムとはコードからなるアプリケーションプログラムを指す。端末はサーバからアイテムをダウンロードし、且つインストールして実行することができる。アイテムが端末で動作する過程で、アイテムの動作状況についてリアルタイムに検出する。予め各種所定のタイプの異常情報を設定する。例えば、</br>
_SIGABRT:プログラムの異常終了で、abort関数を呼び出すことで生成される</br>_
_SIGILL:無効命令異常</br>_
_SIGBUS:特定のハードウェア異常で、一般的にメモリへのアクセスにより引き起こされる</br>_
_SIGFPE:算術例外で、例えば0除算、浮動小数点オーバーフローなど</br>_
_SIGSEGV:メモリへの不正アクセス</br>_。
アイテムが動作する過程で、アイテムに関連異常が発生するとき、対応する異常信号が引き起こされ、非同期事象が発生したことをプロセスに告知する。端末により検出された異常信号が所定の異常信号に該当する場合、所定の異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得する。異常信号処理関数は、呼び出しに備えて予め設定する必要がある。
1つの実施形態として、異常信号処理関数は、以下のコードで実現されてもよい。
<pre><code>
/* Signals to be caught. */
#define SIG_CATCH_COUNT 5
static const int native_sig_catch[SIG_CATCH_COUNT]= {SIGABRT, SIGILL, SIGBUS, SIGFPE, SIGSEGV};

/*
* 登録異常信号処理関数
*/
int sigaction_handler_init(void) {
struct sigaction sa_catch;
sa_catch.sa_sigaction = skn_signal_handler;
sa_catch.sa_flags = SA_SIGINFO;
size_t i = 0;
for (i = 0; native_sig_catch[i] != 0; i++) {
const int sig = native_sig_catch[i];
const struct sigaction *const action = &sa_catch;
if (sigaction(sig, action, NULL) != 0) {
return -1;
}
}

return 0;
}
</code></pre>
ここで、関数_skn\_signal\_handler_は異常信号を検出した後に実行する関数で、異常スタック情報の取得はこの関数において行われる。
ただし、端末に用いるオペレーティングシステムのバージョンがさまざまであるため、設定されている異常信号処理関数も同一ではない。このため、ステップS10はさらに、
前記アイテムが動作する過程で所定の異常信号を検出したとき、前記アイテムの動作するオペレーティングシステムのバージョン情報を確定するステップと、前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成するステップと、を含んでもよい。
具体的には、オペレーティングシステムのバージョンが所定のバージョン未満の場合、第1の所定関数を呼び出して異常が発生するアドレス情報を取得し、dladdr関数によりアドレス情報に対応する関数名及びsoライブラリ情報を取得する。オペレーティングシステムのバージョンが所定のバージョン以上の場合、dlopen関数により所定のパスで第2の所定関数を呼び出して異常が発生するアドレス情報を取得し、dladdr関数によりアドレス情報に対応する関数名及びsoライブラリ情報を取得する。なお、第1の所定関数は、予め設定した異常信号処理関数であり、第2の所定関数は、オペレーティングシステムにより定義された関数で、ユーザが予め設定する必要がなく、異常信号を検出したとき、特定のパスで呼び出せばよい。本実施例では、異常スタック情報は主に、異常が発生する関数名及びsoライブラリ情報を含む。
以下にAndroidシステムを例に説明する。所定のバージョンをAndroid 5.0とし、AndroidシステムはAndroid 5.0よりART仮想マシンを用いるため、異常情報の取得はAndroid5.0以上及びAndroid5.0未満において2タイプの方法を用い、すなわち、Android 5.0以上はunwindメソッド、Android 5.0以下はlibcorkscrew.soメソッドを用いる。具体的には、unwindメソッドを用いる際、コードにunwind.hヘッダファイルを組み入れ、\_Unwind\_Backtrace関数により異常が発生するアドレス情報を取得した後、dladdr関数によりアドレス情報に対応する関数名及びsoライブラリ情報を取得してもよい。libcorkscrew.soメソッドを用いる際、上記の所定パスは、Android4.xバージョンにおける/system/lib/というパスであってもよく、dlopen関数により対応するライブラリを開き、そしてlibcorkscrew.soメソッドを呼び出し、当該メソッドに基づき異常が発生するアドレス情報を調べ、そして当該アドレス情報に基づき対応する関数名及びsoライブラリ情報を調べる。
好ましくは、1つの実施形態として、開発者が異常信号の具体的な情報を把握できるように、第1の異常スタック情報は検出した異常信号の信号タイプをさらに含む。
前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成するステップは、前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得することと、前記アドレス情報に基づき異常スタックデータを取得し、検出した前記異常信号の信号タイプを取得することと、前記信号タイプと前記異常スタックデータとを組み合わせて前記第1の異常スタック情報を生成することと、を含む。
異常が発生するアドレス情報に基づき、対応する異常スタックデータを取得した後、異常信号を検出したときに記録した当該異常信号の前記信号タイプを取得し、当該信号タイプと前記異常スタックデータとを組み合わせて第1の異常スタック情報を生成し、異常スタックデータは、上記調べた異常が発生する関数名及びsoライブラリ情報を含む。なお、第1の異常スタック情報はnative層で取得してローカルに記憶された後、native層がアプリケーション層に告知メッセージを送信し、アプリケーション層に読み取るように指示してもよい。Androidシステムの場合、アプリケーション層は、すなわちJava(登録商標)層である。native層で信号タイプと異常スタックデータとを組み合わせるとき、アプリケーション層と区別するために、所定のセパレータを用いて分割する。
ステップS20:前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取る。
ステップS30:前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する。
通常、端末が異常信号を検出したときに、そのアプリケーション層が異常スタック情報を記録する。一般的にシステムの設定に基づき一定のパスで記憶し、このため、異常信号を検出したときに、直接設定されたパスで、記憶された異常情報を読み取り、上記第2の異常スタック情報としてもよい。
取得したnative層の第1の異常スタック情報と、読み取って記憶されたアプリケーション層の第2の異常スタック情報とに対してカプセル化処理を行い、且つサーバに報告することにより、開発者がタイムリーにアプリケーションプログラムにおける異常が発生するコードの位置を特定して分析し、そしてタイムリーにアプリケーションプログラムを保守して更新することができる。報告を完了した後、当該アイテムを終了する。
従来技術によるnative層の異常スタックの取得方法は通常、コード量が大きく(例えばGoogle BreakPad)、あるいは関連スタック情報を読み取るにはシステムのroot権限が必要で(例えばtombstone)、しかもそのプロセスがかなり複雑なものである。
本実施例に係る異常スタック情報取得方法は、アイテムが動作する過程で所定の異常信号を検出したとき、比較的小さなコード量で、予め定義した関数によりnative層の異常スタック情報を取得し、またroot権限を用いず、異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取り、2つの異常スタック情報をカプセル化してサーバにアップロードし、そしてアプリケーションを終了するものである。異常を検出した後、直接アプリケーションを強制終了することを回避する。このため、native層を含む完全な異常スタック情報をタイムリーに取得してサーバにアップロードすることができ、異常の発生について全面的に監視し、異常スタック情報をリアルタイムに報告することができ、開発者は、アプリケーションの異常をタイムリーに発見し、迅速に位置を特定してトラブルを解決することができる。
第1の実施例に基づき、本願発明に係る異常スタック情報取得方法の第2の実施例を提供する。図2に示すように、本実施例では、ステップS30はさらに、ステップS31と、ステップS32とを含む。
ステップS31:記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換する。
ステップS32:前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了する。
通常、上記の方法で取得した第1の異常スタック情報は、開発者にとって可読性が低いもので、第1の異常情報からその関数名くらいは知ることができるが、異常が存在するファイルの名称及び存在する行の番号は直接知ることができない。その可読性を高めるために、第1の異常スタック情報を取得した後、当該アプリケーションとマッチングするシンボルテーブルにより第1の異常スタック情報に対して復元処理を行うことにより、関数名、当該関数名に対応するファイル名及び行番号を含む第3の異常スタック情報を得る。なお、シンボルテーブルは、言語トランスレータ用のデータ構造で、シンボルテーブルでは、プログラムソースコードにおける各識別子がいずれもその宣言、又は使用情報と結び付けられる。本実施例では、アイテムのシンボルテーブルにおける各関数名にはいずれも対応するファイル名及び存在する行の番号がある。アイテムのバージョンごとに1つのシンボルテーブルと対応する。アイテムがアップグレードされた場合、そのシンボルテーブルを更新する必要がある。
好ましくは、他の実施例では、アイテム情報の安全性を高めるために、シンボルテーブルをサーバに格納してもよい。サーバが端末の報告した異常スタック情報を受信した後、記憶されているシンボルテーブルに基づき第1の異常スタック情報に対して復元処理を行う。
本実施例では、予め情報復元スクリプトを設定する。第1の異常スタック情報を取得した後、情報復元スクリプトを起動し、前記情報復元スクリプトに基づき、前記第1の異常スタック情報における関数名を順次前記シンボルテーブルにおける関数名と1つずつマッチングし、前記第1の異常スタック情報における関数名に対応するファイル名及び行番号を取得し、そして取得したファイル名及び行番号を元の第1の異常スタック情報に追加し、前記サーバが読み取り可能な第3の異常スタック情報を生成する。
前記情報復元スクリプトは、以下であってもよい。

ここで、crash.txtは、復元していない異常情報、すなわち第1の異常スタック情報で、symbol.txtは、シンボルテーブルで、result.txtは、復元済みの異常情報、すなわち、第3の異常スタック情報である。
例えば、取得した異常情報は、以下である場合、
<code><pre>
\_Z2aav /data/app/com.pingan.pad_demo-2/lib/arm/libcrash.so
</code></pre>
上記の情報復元スクリプトにより復元された異常情報は、以下となる。
<code><pre>
Z2aav
/Users/duyuan797/Workspace/sky-eye/sky-eye/src/main/cpp/./src/skncrash.cpp:72 /data/app/com.pingan.pad_demo-2/lib/arm/libcrash.so
</code></pre>
本実施例に係る方法は、取得したnative層の第1の異常スタック情報に対して復元処理を行うことにより、サーバにおけるその可読性を高め、開発者はより完全な異常情報を取得しやすくなる。
図3は、本願発明による異常スタック情報取得装置の好適な実施例の概略図を示す。
本実施例では、異常スタック情報取得装置は、スマートフォン、タブレットPC、電子ブックリーダー、MP3(Moving Picture Experts Group Audio Layer III、ムービングピクチャーエクスパーツグループオーディオレイヤー3)プレイヤー、MP4(Moving Picture Experts Group Audio Layer IV、ムービングピクチャーエクスパーツグループオーディオレイヤー4)プレイヤー、ポータブルPCなど表示機能を備える携帯型端末機器であってもよい。
当該異常スタック情報装置は、記憶手段11と、処理手段12と、通信バス13と、ネットワークインタフェース14とを含む。通信バス13は、これらの要素間の接続と通信を実現する。ネットワークインタフェース14は、場合によっては、標準の有線インタフェース、無線インタフェース(例えば、WI−FIインタフェース)を含んでもよい。記憶手段11は、高速RAMメモリでもよいが、又は不揮発性メモリ(non−volatile memory)、例えば磁気ディスクメモリであってもよい。
いくつかの実施例では、記憶手段11は、異常スタック情報取得装置内部の記憶手段、例えば、当該装置のハードディスクであってもよい。また、他の実施例では、当該装置外部の記憶手段、例えば、当該装置に搭載された外付けハードディスク、スマートメディアカード(Smart Media(登録商標) Card、SMC)、セキュアデジタル(Secure Digital、SD)カード、フラッシュカード(Flash Card)などであってもよい。又は、記憶手段11は、異常スタック情報取得装置内部の記憶ユニット及び外部の記憶デバイスの両方を含んでもよい。記憶手段11は、当該装置にインストールされるアプリケーションソフトウェア及び各種データ、例えば、異常スタック情報取得プログラムのコードなどを記憶し、あるいはすでに出力された又は出力しようとするデータを一時記憶する。
いくつかの実施例では、処理手段12は、例えば、中央処理装置(Central Processing Unit、CPU)、マイクロプロセッサ、又はその他のデータ処理チップであってもよい。記憶手段11に記憶されているプログラムコードを実行するか、又はデータを処理し、例えば、異常スタック情報取得プログラムなどを実行する。
図3では、要素11〜14と、異常スタック情報取得プログラムとを備える異常スタック情報取得装置を示しているが、必ずしも示されたすべての要素で実施するとは限らず、代替案としてより多い又はより少ない数の要素で実施してもよい。
場合によっては、当該装置は、ユーザインタフェースをさらに含んでもよく、ユーザインタフェースは、ディスプレイ(Display)、入力手段、例えばキーボード(Keyboard)を含んでもよい。また場合によっては、ユーザインタフェースは、標準の有線インタフェース、無線インタフェースを含んでもよい。いくつかの実施例では、ディスプレイは、例えば、LEDディスプレイ、液晶ディスプレイ、タッチコントロール液晶ディスプレイ、又はOLED(Organic Light−Emitting Diode、有機発光ダイオード)パネルであってもよい。異常スタック情報取得装置で処理される情報や、グラフィカルユーザインタフェースなどを表示する。
場合によっては、当該装置は、カメラ、RF(Radio Frequency、高周波)回路、センサ、音声処理回路、WiFiモジュールなどを含んでもよい。センサとしては、例えば光センサ、モーションセンサ、又はその他のセンサが挙げられる。このうち、光センサは、環境光センサ及び近接センサを含んでもよい。当該装置が移動端末の場合、環境光センサは、環境光の明るさに基づきディスプレイの輝度を調整し、接近センサは、移動端末が耳の近くに移動すると、ディスプレイ及び/又はバックライトをオフにすることができる。モーションセンサとして、例えば重力加速度センサは、各方向(一般的には3軸)における加速度の大きさを検出し、静止状態では重力の大きさ及び方向を検出することができ、移動端末の姿勢を認識するアプリケーション(例えば、横/縦画面表示の切り替え、当該機能が必要なゲーム、磁気計姿勢の校正)、振動認識に関連する機能(例えば歩数計、叩き動作)などに用いる。当然ながら、移動端末にジャイロスコープ、気圧計、湿度計、温度計、赤外線センサなどその他のセンサを配置してもよく、ここでは説明を省略する。
図3に示す装置の実施例では、コンピュータの記憶媒体である記憶手段11に、オペレーティングシステム、及び異常スタック情報取得プログラムが記憶されてもよい。ネットワークインタフェース14は主に、サーバと接続し、サーバとデータ通信を行うために用いる。処理手段12は記憶手段11に記憶されている異常スタック情報取得プログラムを実行するとき、
アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得するステップと、
前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取るステップと、
前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了するステップと、を実現する。
本実施例では、アイテムとはコードからなるアプリケーションプログラムを指す。端末はサーバからアイテムをダウンロードし、且つインストールして実行することができる。アイテムが端末で動作する過程で、アイテムの動作状況についてリアルタイムに検出する。予め各種所定のタイプの異常情報を設定する。例えば、</br>
_SIGABRT:プログラムの異常終了で、abort関数を呼び出すことで生成される</br>_
_SIGILL:無効命令異常</br>_
_SIGBUS:特定のハードウェア異常で、一般的にメモリへのアクセスにより引き起こされる</br>_
_SIGFPE:算術例外で、例えば0除算、浮動小数点オーバーフローなど</br>_
_SIGSEGV:メモリへの不正アクセス</br>_。
アイテムが動作する過程で、アイテムに関連異常が発生するとき、対応する異常信号が引き起こされ、非同期事象が発生したことをプロセスに告知する。端末により検出された異常信号が所定の異常信号に該当する場合、所定の異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得する。異常信号処理関数は、呼び出しに備えて予め設定する必要がある。
1つの実施形態として、異常信号処理関数は、以下のコードで実現されてもよい。
<pre><code>
/* Signals to be caught. */
#define SIG_CATCH_COUNT 5
static const int native_sig_catch[SIG_CATCH_COUNT]= {SIGABRT, SIGILL, SIGBUS, SIGFPE, SIGSEGV};

/*
* 登録異常信号処理関数
*/
int sigaction_handler_init(void) {
struct sigaction sa_catch;
sa_catch.sa_sigaction = skn_signal_handler;
sa_catch.sa_flags = SA_SIGINFO;
size_t i = 0;
for (i = 0; native_sig_catch[i] != 0; i++) {
const int sig = native_sig_catch[i];
const struct sigaction *const action = &sa_catch;
if (sigaction(sig, action, NULL) != 0) {
return -1;
}
}

return 0;
}
</code></pre>
ここで、関数_skn\_signal\_handler_は異常信号を検出した後に実行する関数で、異常スタック情報の取得はこの関数において行われる。
ただし、端末に用いるオペレーティングシステムのバージョンがさまざまであるため、設定されている異常信号処理関数も同一ではない。このため、異常スタック情報取得プログラムが処理手段12により実行されるとき、さらに
前記アイテムが動作する過程で所定の異常信号を検出したとき、前記アイテムの動作するオペレーティングシステムのバージョン情報を確定するステップと、
前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成するステップと、を実現する。
具体的には、異常スタック情報取得プログラムが処理手段12により実行されるとき、さらに、
オペレーティングシステムのバージョンが所定のバージョン未満の場合、第1の所定関数を呼び出して異常が発生するアドレス情報を取得し、dladdr関数によりアドレス情報に対応する関数名及びsoライブラリ情報を取得し、あるいは、オペレーティングシステムのバージョンが所定のバージョン以上の場合、dlopen関数により所定のパスで第2の所定関数を呼び出して異常が発生するアドレス情報を取得し、dladdr関数によりアドレス情報に対応する関数名及びsoライブラリ情報を取得するステップを実現する。
なお、第1の所定関数は、予め設定した異常信号処理関数であり、第2の所定関数は、オペレーティングシステムにより定義された関数で、ユーザが予め設定する必要がなく、異常信号を検出したとき、特定のパスで呼び出せばよい。本実施例では、異常スタック情報は主に、異常が発生する関数名及びsoライブラリ情報を含む。
以下にAndroidシステムを例に説明する。所定のバージョンをAndroid 5.0とし、AndroidシステムはAndroid 5.0よりART仮想マシンを用いるため、異常情報の取得はAndroid5.0以上及びAndroid5.0未満において2タイプの方法を用い、すなわち、Android 5.0以上はunwindメソッド、Android 5.0以下はlibcorkscrew.soメソッドを用いる。具体的には、unwindメソッドを用いる際、コードにunwind.hヘッダファイルを組み入れ、\_Unwind\_Backtrace関数により異常が発生するアドレス情報を取得した後、dladdr関数によりアドレス情報に対応する関数名及びsoライブラリ情報を取得してもよい。libcorkscrew.soメソッドを用いる際、上記の所定パスは、Android4.xバージョンにおける/system/lib/というパスであってもよく、dlopen関数により対応するライブラリを開き、そしてlibcorkscrew.soメソッドを呼び出し、当該メソッドに基づき異常が発生するアドレス情報を調べ、そして当該アドレス情報に基づき対応する関数名及びsoライブラリ情報を調べる。
好ましくは、1つの実施形態として、開発者が異常信号の具体的な情報を把握できるように、第1の異常スタック情報は検出した異常信号の信号タイプをさらに含む。
異常スタック情報取得プログラムが処理手段12により実行されるとき、さらに以下のステップを実現する。
つまり、前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成するステップは、前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得することと、前記アドレス情報に基づき異常スタックデータを取得し、検出した前記異常信号の信号タイプを取得することと、前記信号タイプと前記異常スタックデータとを組み合わせて前記第1の異常スタック情報を生成することと、を含む。
異常が発生するアドレス情報に基づき、対応する異常スタックデータを取得した後、異常信号を検出したときに記録した当該異常信号の前記信号タイプを取得し、当該信号タイプと前記異常スタックデータとを組み合わせて第1の異常スタック情報を生成し、異常スタックデータは、上記調べた異常が発生する関数名及びsoライブラリ情報を含む。なお、第1の異常スタック情報はnative層で取得してローカルに記憶された後、native層がアプリケーション層に告知メッセージを送信し、アプリケーション層に読み取るように指示してもよい。Androidシステムの場合、アプリケーション層は、すなわち、Java(登録商標)層である。native層で信号タイプと異常スタックデータとを組み合わせるとき、アプリケーション層と区別するために、所定のセパレータを用いて分割する。
通常、端末が異常信号を検出したときに、そのアプリケーション層が異常スタック情報を記録する。一般的にシステムの設定に基づき一定のパスで記憶し、このため、異常信号を検出したときに、直接設定されたパスで、記憶された異常情報を読み取り、上記第2の異常スタック情報としてもよい。
取得したnative層の第1の異常スタック情報と、読み取って記憶されたアプリケーション層の第2の異常スタック情報とに対してカプセル化処理を行い、且つサーバに報告することにより、開発者がタイムリーにアプリケーションプログラムにおける異常が発生するコードの位置を特定して分析し、そしてタイムリーにアプリケーションプログラムを保守して更新することができる。報告を完了した後、当該アイテムを終了する。
従来技術によるnative層の異常スタックの取得方法は、通常、コード量が大きく(例えばGoogle BreakPad)、あるいは関連スタック情報を読み取るにはシステムのroot権限が必要で(例えばtombstone)、しかもそのプロセスがかなり複雑なものである。
本実施例に係る異常スタック情報取得装置は、アイテムが動作する過程で所定の異常信号を検出したとき、比較的小さなコード量で、予め定義した関数によりnative層の異常スタック情報を取得し、またroot権限を用いず、異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取り、2つの異常スタック情報をカプセル化してサーバにアップロードし、そしてアプリケーションを終了するものである。異常を検出した後、直接アプリケーションを強制終了することを回避する。このため、native層を含む完全な異常スタック情報をタイムリーに取得してサーバにアップロードすることができ、異常の発生について全面的に監視し、異常スタック情報をリアルタイムに報告することができ、開発者は、アプリケーションの異常をタイムリーに発見し、迅速に位置を特定してトラブルを解決することができる。
第1の実施例に基づき、本願発明に係る異常スタック情報取得装置の第2の実施例を提供する。本実施例では、異常スタック情報取得プログラムが処理手段12により実行されるとき、さらに
記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換するステップと、
前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了するステップと、を実現する。
通常、上記の方法で取得した第1の異常スタック情報は、開発者にとって可読性が低いもので、第1の異常情報からその関数名くらいは知ることができるが、異常が存在するファイルの名称及び存在する行の番号は直接知ることができない。その可読性を高めるために、第1の異常スタック情報を取得した後、当該アプリケーションとマッチングするシンボルテーブルにより第1の異常スタック情報に対して復元処理を行うことにより、関数名、当該関数名に対応するファイル名及び行番号を含む第3の異常スタック情報を得る。なお、シンボルテーブルは、言語トランスレータ用のデータ構造で、シンボルテーブルでは、プログラムソースコードにおける各識別子がいずれもその宣言、又は使用情報と結び付けられる。本実施例では、アイテムのシンボルテーブルにおける各関数名にはいずれも対応するファイル名及び存在する行の番号がある。アイテムのバージョンごとに1つのシンボルテーブルと対応する。アイテムがアップグレードされた場合、そのシンボルテーブルを更新する必要がある。
好ましくは、他の実施例では、アイテム情報の安全性を高めるために、シンボルテーブルをサーバに格納してもよい。サーバが端末の報告した異常スタック情報を受信した後、記憶されているシンボルテーブルに基づき第1の異常スタック情報に対して復元処理を行う。
本実施例では、予め情報復元スクリプトを設定する。第1の異常スタック情報を取得した後、処理手段12が異常スタック情報取得プログラムを実行し、
情報復元スクリプトを起動し、前記情報復元スクリプトに基づき、前記第1の異常スタック情報における関数名を順次前記シンボルテーブルにおける関数名と1つずつマッチングし、前記第1の異常スタック情報における関数名に対応するファイル名及び行番号を取得するステップと、取得したファイル名及び行番号を元の第1の異常スタック情報に追加し、前記サーバが読み取り可能な第3の異常スタック情報を生成するステップと、を実現する。
前記情報復元スクリプトは、以下であってもよい。

ここで、crash.txtは、復元していない異常情報、すなわち第1の異常スタック情報で、symbol.txtは、シンボルテーブルで、result.txtは、復元済みの異常情報、すなわち第3の異常スタック情報である。
例えば、取得した異常情報が、以下である場合、
<code><pre>
\_Z2aav /data/app/com.pingan.pad_demo-2/lib/arm/libcrash.so
</code></pre>
上記の情報復元スクリプトにより復元された異常情報は、以下となる。
<code><pre>
Z2aav
/Users/duyuan797/Workspace/sky-eye/sky-eye/src/main/cpp/./src/skncrash.cpp:72 /data/app/com.pingan.pad_demo-2/lib/arm/libcrash.so
</code></pre>
本実施例に係る装置は、異常スタック情報取得プログラムで取得したnative層の第1の異常スタック情報に対して復元処理を行うことにより、サーバにおけるその可読性を高め、開発者はより完全な異常情報を取得しやすくなる。
場合によっては、他の実施例では、異常スタック情報取得プログラムは、1つ又は複数のモジュールに分割されてもよい。これらのモジュールは、記憶手段11に記憶されており、且つ1つ又は複数の処理手段(本実施例では処理手段12)により実行されることで、本願発明を実現する。本願発明に用いるモジュールという用語は、異常スタック情報取得装置における異常スタック情報取得プログラムの実行プロセスの説明に好適で、特定の機能を実現可能な一連のコンピュータプログラムセグメントを指すものである。
例えば、一実施例では、異常スタック情報取得プログラムは、取得モジュール10と、報告モジュール20とに分割されてもよい。図4は、本願発明による異常スタック情報取得装置における異常スタック情報取得プログラムの機能モジュールを示す。
図4によると、取得モジュール10は、アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得し、そして前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取る。
報告モジュール20は、前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する。
また、本実施例はさらに、コンピュータ読み取り可能な記憶媒体を提供する。前記コンピュータ読み取り可能な記憶媒体に、異常スタック情報取得プログラムが記憶されており、前記異常スタック情報取得プログラムが処理手段により実行されるとき、
アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得する動作と、
前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取る動作と、
前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する動作と、を実現する。
さらに、前記異常スタック情報取得プログラムが処理手段により実行されるとき、
前記アイテムが動作する過程で所定の異常信号を検出したとき、前記アイテムの動作するオペレーティングシステムのバージョン情報を確定する動作と、
前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成する動作と、を実現する。
さらに、前記異常スタック情報取得プログラムが処理手段により実行されるとき、
前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得する動作と、
前記アドレス情報に基づき異常スタックデータを取得し、検出した前記異常信号の信号タイプを取得する動作と、
前記信号タイプと前記異常スタックデータとを組み合わせて前記第1の異常スタック情報を生成す動作と、を実現する。
さらに、前記異常スタック情報取得プログラムが処理手段により実行されるとき、
記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換する動作と、
前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了する動作と、を実現する。
本明細書における用語「含む」、又はこれに類する他の用語は、非排他的な包括を意味し、これにより、一連の要素を含むプロセス、方法、物品、もしくは装置は、これらの要素だけでなく、明記していない他の要素も含み、又はこのようなプロセス、方法、物品、もしくは装置に固有の要素をさらに含む。よって、特段の限定がない限り、文言「〜を含む」などにより限定される要素は、当該要素を含むプロセス、方法、物品又は装置にさらに同一の要素が存在する場合を除外しない。
本発明の実施例に付与した番号は、記載上の便宜を図るものに過ぎず、実施例の優劣を示すものではない。
当業者は、実施形態に関する上記の説明により、上記の実施例に係る方法は、ソフトウェアと、必要な汎用ハードウェアプラットフォームとを組み合わせる方式でも、ハードウェアでも実現できるが、多くの場合には、前者がより好ましい実施形態となることを理解できるであろう。これにより、本願に係る発明の趣旨又は従来技術について改良する部分を、ソフトウェア製品の形で表現することができ、当該コンピュータソフトウェア製品は、上記した記憶媒体(例えば、ROM/RAM、磁気ディスク、CDROM)に記憶されており、且つ、端末機器(例えば、携帯電話、コンピュータ、サーバ、空調装置、又はネットワーク機器)により本発明の各実施例に記載の方法を実行するための複数のコマンドを含む。
上記の内容は、本願発明の好適な実施例を記載するものに過ぎず、これをもって特許請求の範囲を限定するものではなく、本明細書及び図面の内容に基づく均等な構造変更、又はその他の関連する技術分野への直接的もしくは間接的な適用は、いずれも本願発明の特許保護の範囲に含まれるものとする。

Claims (20)

  1. 異常スタック情報取得方法であって、
    アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得することと、
    前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取ることと、
    前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含むことを特徴とする異常スタック情報取得方法。
  2. アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得する前記ステップは、
    前記アイテムが動作する過程で所定の異常信号を検出したとき、前記アイテムの動作するオペレーティングシステムのバージョン情報を確定することと
    前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼びして実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成することと、を含むことを特徴とする請求項1に記載の異常スタック情報取得方法。
  3. 前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成する前記ステップは、
    前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得することと、
    前記アドレス情報に基づき異常スタックデータを取得し、検出した前記異常信号の信号タイプを取得することと、
    前記信号タイプと前記異常スタックデータとを組み合わせて前記第1の異常スタック情報を生成することと、を含むことを特徴とする請求項2に記載の異常スタック情報取得方法。
  4. 前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する前記ステップは、
    記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換することと、
    前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含むことを特徴とする請求項2に記載の異常スタック情報取得方法。
  5. 前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する前記ステップは、
    記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換することと、
    前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含むことを特徴とする請求項3に記載の異常スタック情報取得方法。
  6. 記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換する前記ステップは、
    情報復元スクリプトを起動し、前記情報復元スクリプトに基づき、前記第1の異常スタック情報における関数名を順次前記シンボルテーブルにおける関数名と1つずつマッチングし、前記第1の異常スタック情報における関数名に対応するファイル名及び行番号を取得することと、
    取得したファイル名及び行番号を元の第1の異常スタック情報に追加し、前記サーバが読み取り可能な第3の異常スタック情報を生成することと、を含むことを特徴とする請求項3に記載の異常スタック情報取得方法。
  7. 記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換する前記ステップは、
    情報復元スクリプトを起動し、前記情報復元スクリプトに基づき、前記第1の異常スタック情報における関数名を順次前記シンボルテーブルにおける関数名と1つずつマッチングし、前記第1の異常スタック情報における関数名に対応するファイル名及び行番号を取得することと、
    取得したファイル名及び行番号を元の第1の異常スタック情報に追加し、前記サーバが読み取り可能な第3の異常スタック情報を生成することと、を含むことを特徴とする請求項4に記載の異常スタック情報取得方法。
  8. 異常スタック情報取得装置であって、
    記憶手段と、処理手段と、前記記憶手段に記憶されており、且つ前記処理手段で動作可能な異常スタック情報取得プログラムとを含み、前記異常スタック情報取得プログラムが前記処理手段により実行されるとき、
    アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得するステップと、
    前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取るステップと、
    前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了するステップと、を実現することを特徴とする異常スタック情報取得装置。
  9. アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得する前記ステップは、
    前記アイテムが動作する過程で所定の異常信号を検出したとき、前記アイテムの動作するオペレーティングシステムのバージョン情報を確定することと
    前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼びして実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成することと、を含むことを特徴とする請求項8に記載の異常スタック情報取得装置。
  10. 前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成する前記ステップは、
    前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得することと、
    前記アドレス情報に基づき異常スタックデータを取得し、検出した前記異常信号の信号タイプを取得することと、
    前記信号タイプと前記異常スタックデータとを組み合わせて前記第1の異常スタック情報を生成することと、を含むことを特徴とする請求項8に記載の異常スタック情報取得装置。
  11. 前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する前記ステップは、
    記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換することと、
    前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含むことを特徴とする請求項9に記載の異常スタック情報取得装置。
  12. 前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する前記ステップは、
    記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換することと、
    前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含むことを特徴とする請求項10に記載の異常スタック情報取得装置。
  13. 記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換する前記ステップは、
    情報復元スクリプトを起動し、前記情報復元スクリプトに基づき、前記第1の異常スタック情報における関数名を順次前記シンボルテーブルにおける関数名と1つずつマッチングし、前記第1の異常スタック情報における関数名に対応するファイル名及び行番号を取得することと、
    取得したファイル名及び行番号を元の第1の異常スタック情報に追加し、前記サーバが読み取り可能な第3の異常スタック情報を生成することと、含むことを特徴とする請求項10に記載の異常スタック情報取得装置。
  14. 記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換する前記ステップは、
    情報復元スクリプトを起動し、前記情報復元スクリプトに基づき、前記第1の異常スタック情報における関数名を順次前記シンボルテーブルにおける関数名と1つずつマッチングし、前記第1の異常スタック情報における関数名に対応するファイル名及び行番号を取得することと、
    取得したファイル名及び行番号を元の第1の異常スタック情報に追加し、前記サーバが読み取り可能な第3の異常スタック情報を生成することと、を含むことを特徴とする請求項11に記載の異常スタック情報取得装置。
  15. コンピュータ読み取り可能な記憶媒体であって、
    当該媒体に異常スタック情報取得プログラムが記憶されており、前記異常スタック情報取得プログラムが処理手段により実行されるとき、
    アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得するステップと、
    前記異常信号を検出したときにアプリケーション層が記録した第2の異常スタック情報を読み取るステップと、
    前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了するステップと、を実現することを特徴とするコンピュータ読み取り可能な記憶媒体。
  16. アイテムが動作する過程で所定の異常信号を検出したとき、異常信号処理関数を呼び出して実行することにより、native層の第1の異常スタック情報を取得する前記ステップは、
    前記アイテムが動作する過程で所定の異常信号を検出したとき、前記アイテムの動作するオペレーティングシステムのバージョン情報を確定することと
    前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼びして実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成することと、を含むことを特徴とする請求項15に記載のコンピュータ読み取り可能な記憶媒体。
  17. 前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得し、且つ前記アドレス情報に基づき第1の異常スタック情報を生成する前記ステップは、
    前記オペレーティングシステムのバージョン情報に対応する異常信号処理関数を呼び出して実行し、異常が発生するアドレス情報を取得することと、
    前記アドレス情報に基づき異常スタックデータを取得し、検出した前記異常信号の信号タイプを取得することと、
    前記信号タイプと前記異常スタックデータとを組み合わせて前記第1の異常スタック情報を生成することと、を含むことを特徴とする請求項16に記載のコンピュータ読み取り可能な記憶媒体。
  18. 前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する前記ステップは、
    記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換することと、
    前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含むことを特徴とする請求項16に記載のコンピュータ読み取り可能な記憶媒体。
  19. 前記第1の異常スタック情報と前記第2の異常スタック情報とを組み合わせてサーバに報告し、且つ報告を完了した後、前記アイテムを終了する前記ステップは、
    記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換することと、
    前記第3の異常スタック情報と前記第2の異常スタック情報とを組み合わせて前記サーバに報告し、且つ報告を完了した後、前記アイテムを終了することと、を含むことを特徴とする請求項17に記載のコンピュータ読み取り可能な記憶媒体。
  20. 記憶されているシンボルテーブルを読み取り、且つ前記シンボルテーブルに基づき、取得した第1の異常スタック情報に対して復元処理を行うことにより、前記第1の異常スタック情報を前記サーバが読み取り可能な第3の異常スタック情報に変換する前記ステップは、
    情報復元スクリプトを起動し、前記情報復元スクリプトに基づき、前記第1の異常スタック情報における関数名を順次前記シンボルテーブルにおける関数名と1つずつマッチングし、前記第1の異常スタック情報における関数名に対応するファイル名及び行番号を取得することと、
    取得したファイル名及び行番号を元の第1の異常スタック情報に追加し、前記サーバが読み取り可能な第3の異常スタック情報を生成することと、を含むことを特徴とする請求項17に記載のコンピュータ読み取り可能な記憶媒体。
JP2018553347A 2017-06-12 2017-09-30 異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体 Active JP6648306B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201710440288.8 2017-06-12
CN201710440288.8A CN107704356B (zh) 2017-06-12 2017-06-12 异常堆栈信息获取方法、装置及计算机可读存储介质
PCT/CN2017/105018 WO2018227822A1 (zh) 2017-06-12 2017-09-30 异常堆栈信息获取方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
JP2019525275A true JP2019525275A (ja) 2019-09-05
JP6648306B2 JP6648306B2 (ja) 2020-02-14

Family

ID=61170175

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018553347A Active JP6648306B2 (ja) 2017-06-12 2017-09-30 異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体

Country Status (5)

Country Link
US (1) US11010227B2 (ja)
JP (1) JP6648306B2 (ja)
CN (1) CN107704356B (ja)
SG (1) SG11201901803SA (ja)
WO (1) WO2018227822A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110275791A (zh) * 2018-03-14 2019-09-24 普天信息技术有限公司 一种应用程序异常处理方法及装置
CN108763060A (zh) * 2018-04-27 2018-11-06 广州华多网络科技有限公司 Android系统中Native层崩溃溯源方法、装置、存储介质及终端
CN108846287A (zh) * 2018-06-26 2018-11-20 北京奇安信科技有限公司 一种检测漏洞攻击的方法及装置
CN112181695A (zh) * 2019-07-01 2021-01-05 顺丰科技有限公司 异常应用处理方法、装置、服务器及存储介质
CN110750375B (zh) * 2019-07-16 2023-07-21 许昌许继软件技术有限公司 一种嵌入式设备及其异常信息处理方法
CN110457154B (zh) * 2019-07-25 2023-12-22 Oppo广东移动通信有限公司 异常服务处理方法及装置、存储介质、通信终端
CN111176869B (zh) * 2019-08-01 2022-05-10 腾讯云计算(北京)有限责任公司 超时检测方法、装置、设备及存储介质
CN112395119B (zh) * 2019-08-12 2024-03-12 北京达佳互联信息技术有限公司 异常数据处理方法、装置、服务器及存储介质
CN111159051B (zh) * 2019-12-31 2023-07-04 北京天融信网络安全技术有限公司 死锁检测方法、装置、电子设备及可读存储介质
CN113297052B (zh) * 2020-02-21 2024-04-26 腾讯科技(深圳)有限公司 应用程序的卡顿事件定位方法、装置、存储介质和设备
CN111414270B (zh) * 2020-03-24 2023-05-09 北京字节跳动网络技术有限公司 一种异常处理方法及装置
CN111767164B (zh) * 2020-05-18 2022-08-09 福建天晴数码有限公司 一种组装产品中定位崩溃堆栈所属组件的方法及其系统
CN114253825A (zh) * 2020-09-22 2022-03-29 腾讯科技(深圳)有限公司 内存泄漏检测方法、装置、计算机设备和存储介质
CN113867847A (zh) * 2021-11-30 2021-12-31 统信软件技术有限公司 一种异常插件处理方法、装置及计算设备
CN114020540A (zh) * 2022-01-05 2022-02-08 湖南新云网科技有限公司 一种app重启方法、系统、装置及计算机可读存储介质

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996829B2 (en) * 2000-02-25 2006-02-07 Oracle International Corporation Handling callouts made by a multi-threaded virtual machine to a single threaded environment
US7003778B2 (en) * 2001-10-24 2006-02-21 Sun Microsystems, Inc. Exception handling in java computing environments
CN1328638C (zh) * 2005-08-04 2007-07-25 西安交通大学 Windows环境下的主机入侵检测方法
US20070294675A1 (en) * 2006-06-20 2007-12-20 Transitive Limited Method and apparatus for handling exceptions during binding to native code
US7962924B2 (en) * 2007-06-07 2011-06-14 International Business Machines Corporation System and method for call stack sampling combined with node and instruction tracing
US8291381B2 (en) * 2007-09-27 2012-10-16 Microsoft Corporation Call stack parsing in multiple runtime environments
US20090013208A1 (en) * 2008-03-31 2009-01-08 Dimuzio Thomas M Real time automated exception notification and reporting solution
CN100570581C (zh) * 2008-04-09 2009-12-16 中兴通讯股份有限公司 故障定位的方法和装置
CN101599039B (zh) * 2008-06-03 2011-11-02 华为技术有限公司 嵌入式c语言环境下异常处理方法及装置
US8799904B2 (en) * 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
CN103152381B (zh) * 2013-01-07 2016-06-29 北京奇虎科技有限公司 一种对浏览器崩溃数据进行处理的方法和服务器系统
CN103092746B (zh) * 2013-02-05 2015-12-02 上海大唐移动通信设备有限公司 线程异常的定位方法及系统
CN103544447B (zh) * 2013-05-30 2016-10-12 Tcl集团股份有限公司 一种基于安卓系统的防止机密信息泄露的方法和终端
CN104424090A (zh) * 2013-08-22 2015-03-18 腾讯科技(深圳)有限公司 一种标识崩溃的方法、装置和系统
US9852041B2 (en) * 2013-09-27 2017-12-26 Microsoft Technology Licensing, Llc Systems and methods for categorizing exceptions and logs
CN103544096A (zh) * 2013-10-21 2014-01-29 Tcl集团股份有限公司 Android终端运行异常时的信息反馈方法及系统
EP2879074A1 (en) * 2013-11-29 2015-06-03 Gemalto SA Method for loading a native code on a secure element
CN104021063B (zh) * 2014-05-14 2015-03-11 南京大学 一种基于硬件虚拟化的模块化计算机取证系统及其方法
CN105320572B (zh) * 2014-06-27 2019-02-22 腾讯科技(深圳)有限公司 浏览器异常处理方法、装置及系统
CN104598313A (zh) * 2015-02-04 2015-05-06 广州市久邦数码科技有限公司 一种应用进程被停止后自动重启的实现方法及其系统
CN104899111B (zh) * 2015-06-09 2018-03-20 烽火通信科技股份有限公司 一种处理家庭网关系统内核崩溃的方法及系统
CN105204990B (zh) * 2015-08-21 2017-11-28 上海斐讯数据通信技术有限公司 一种异常调试方法及系统
CN105450731A (zh) * 2015-11-05 2016-03-30 珠海多玩信息技术有限公司 实现web层和native层通信的方法和装置
CN105446822B (zh) * 2015-11-13 2019-06-18 上海斐讯数据通信技术有限公司 基于Linux的软件异常处理系统及方法
CN105653432B (zh) * 2015-12-22 2019-02-15 北京奇虎科技有限公司 一种崩溃数据的处理方法和装置
CN105930139A (zh) * 2016-01-16 2016-09-07 平安科技(深圳)有限公司 应用程序控件动态配置方法及电子设备
CN105844157A (zh) * 2016-04-20 2016-08-10 北京鼎源科技有限公司 一种针对Android系统App行为的监控方法
CN106293629B (zh) * 2016-08-16 2019-08-06 北京小米移动软件有限公司 堆栈获取方法及装置
CN106598770B (zh) * 2016-12-19 2020-08-18 北京奇虎科技有限公司 Android系统中Native层异常上报处理方法及装置
WO2019113216A1 (en) * 2017-12-05 2019-06-13 Agile Stacks Inc. Machine generated automation code for software development and infrastructure operations
US10782945B1 (en) * 2019-04-04 2020-09-22 International Business Machines Corporation Escape analysis supporting on-stack replacement

Also Published As

Publication number Publication date
US20210096942A1 (en) 2021-04-01
CN107704356B (zh) 2019-06-28
JP6648306B2 (ja) 2020-02-14
WO2018227822A1 (zh) 2018-12-20
CN107704356A (zh) 2018-02-16
SG11201901803SA (en) 2019-04-29
US11010227B2 (en) 2021-05-18

Similar Documents

Publication Publication Date Title
JP6648306B2 (ja) 異常スタック情報取得方法、装置及びコンピュータ読み取り可能な記憶媒体
CN109302522B (zh) 测试方法、装置以及计算机系统和介质
US11630553B2 (en) Electronic device and method for displaying history of executed application thereof
CN105389076B (zh) 通过电子装置提供通知的方法和电子装置
US9268670B1 (en) System for module selection in software application testing including generating a test executable based on an availability of root access
EP3171242A1 (en) Electronic device and method for configuring display thereof
CN109726067B (zh) 一种进程监控方法以及客户端设备
CN104063305A (zh) 智能终端软件的压力测试方法、装置和系统
US10191751B2 (en) Information processing device for generating application programming interface information
CN110046479B (zh) 一种基于安卓操作系统的链接库文件反调试方法及装置
CN107015752B (zh) 用于处理视图层上的输入的电子设备和方法
CN110865837B (zh) 一种进行系统升级的方法和终端
CN103914205A (zh) 一种智能终端的文件缩略图展示方法和装置
CN109683967B (zh) 固件支持方法、装置、移动终端及可读存储介质
CN110879742A (zh) 虚拟机异步创建内部快照方法、装置及存储介质
KR20190032861A (ko) 전자 장치 및 그의 제어 방법
CN112394906B (zh) 一种应用切换运行的方法及设备
US20120110383A1 (en) Method and apparatus for off-line analyzing crashed programs
US20180089045A1 (en) Method and device for performing hardware module diagnostics
KR20160016405A (ko) 데이터 처리 방법 및 그 전자 장치
CN107861827B (zh) 卡屏检测方法、移动终端及计算机可读存储介质
CN108139811B (zh) 记录执行屏幕的方法和处理该方法的电子设备
CN116719670B (zh) 数据处理的方法、电子设备及可读存储介质
CN110018918B (zh) 终端异常的修复方法、装置、移动终端及存储介质
CN108268274B (zh) 应用管理方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181011

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181011

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200114

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200115

R150 Certificate of patent or registration of utility model

Ref document number: 6648306

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250