1107523_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

1107523_ja-JP

1107523_ja-JP

Androidログファイルに関数呼び出し元スタックを印刷する方法<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

印刷呼び出し元スタックは、プログラムを分析し、呼び出し元スタックをより簡単に見つけるのに役立つ場合があります。

次のようにコードを書くことができます。

Java:

例外 e = 新しい例外();

     Log.e(TAG,"xxx",e);

C++ ファイル:

#include < utils/Callstack.h>

     android::CallStack stack;

     stack.update(1,30);

     stacn.dump("xxx");

その後、関数の呼び出し元スタックをAndroidのメインログファイルで確認できます。

C ファイル:

#include < コルク栓抜き/backtrace.h>

#define MAX_DEPTH 31
#define MAX_BACKTRACE_LINE_LENGTH 800

静的backtrace_frame_t mStack[MAX_DEPTH];
静的size_t mCount;

void csupdate(int32_t ignoreDepth, int32_t maxDepth) {
if (最大深度 > MAX_DEPTH) {
maxDepth = MAX_DEPTH;
}
ssize_tカウント = unwind_backtrace(mStack, ignoreDepth + 1, maxDepth);
mCount = カウント > 0 ?カウント : 0;
}

void csdump(const char* プレフィックス)\
{
size_t i = 0;
backtrace_symbol_t記号[MAX_DEPTH];

get_backtrace_symbols(mStack, mCount, symbols);

for (i = 0; i < mCount; i++) {
文字行[MAX_BACKTRACE_LINE_LENGTH];
format_backtrace_line(i, &mStack[i], &symbols[i],
行、MAX_BACKTRACE_LINE_LENGTH);
ALOGE("%s%s", 接頭辞, 行);
}

free_backtrace_symbols(シンボル、mCount);
}

void myFunc()

{

     csupdate(1, 30);

csdump("myprefix");

}

Android.mk 年には、以下のようにlibcorkscrewを追加します

LOCAL_SHARED_LIBRARIES := libxxx libyyy libcorkscrew

Android
タグ(1)
評価なし
バージョン履歴
最終更新日:
‎01-06-2026 01:57 AM
更新者: