/data/anr/traces.txtの操作には、rootユーザーまたはシステムユーザーchmodが必要です。
参考ActivityManagerService#dumpStackTraces
コード:
public static File dumpStackTraces(boolean clearTraces, ArrayList<Integer> firstPids,
ProcessCpuTracker processCpuTracker, SparseArray<Boolean> lastPids, String[] nativeProcs) {
String tracesPath = SystemProperties.get("dalvik.vm.stack-trace-file", null);
if (tracesPath == null || tracesPath.length() == 0) {
return null;
}
File tracesFile = new File(tracesPath);
try {
if (clearTraces && tracesFile.exists()) tracesFile.delete();
tracesFile.createNewFile();
FileUtils.setPermissions(tracesFile.getPath(), 0666, -1, -1); // -rw-rw-rw-
} catch (IOException e) {
Slog.w(TAG, "Unable to prepare ANR traces file: " + tracesPath, e);
return null;
}
dumpStackTraces(tracesPath, firstPids, processCpuTracker, lastPids, nativeProcs);
return tracesFile;
}
そして私は、次のようにシェルで問題を扱います。
adb shell kill -3 ${APP_PID}
adb root
adb shell touch /data/anr/traces.txt
また、使用しているコードと完全なスタックトレースを表示します。 –
あなたのアプリケーションが何らかの理由でクラッシュしました(おそらくコードの不具合)。あなたは "スタックトレースを開くことができません"というエラーを無視することができます。これはアプリケーションのクラッシュの原因ではありません。スタックトレースとアプリケーションコードの関連部分を完全に投稿してください。 – Karthik
エミュレータでSDカードをセットアップしないと、このエラーが発生することもあります。 –