diff options
| author | 2009-06-17 13:34:41 -0700 | |
|---|---|---|
| committer | 2009-06-17 13:34:41 -0700 | |
| commit | 5553f1528e94377ae5adf423e91331f5eb57dd44 (patch) | |
| tree | f71d3bce5ff5a36bf4fd9413759907a5133a13cb | |
| parent | 826a54dd74317f87d4afa8c0f1fc3491a69169ff (diff) | |
| parent | f829a78f6c78141d2cf8074f00fcded37fbf9007 (diff) | |
Merge change 3936 into donut
* changes:
add exception message to ApplicationErrorReport
| -rw-r--r-- | core/java/android/app/ApplicationErrorReport.java | 8 | ||||
| -rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 11 |
2 files changed, 17 insertions, 2 deletions
diff --git a/core/java/android/app/ApplicationErrorReport.java b/core/java/android/app/ApplicationErrorReport.java index 0c8f95d7cf55..6b172363296e 100644 --- a/core/java/android/app/ApplicationErrorReport.java +++ b/core/java/android/app/ApplicationErrorReport.java @@ -151,6 +151,11 @@ public class ApplicationErrorReport implements Parcelable { public String exceptionClassName; /** + * Message stored in the exception. + */ + public String exceptionMessage; + + /** * File which the exception was thrown from. */ public String throwFileName; @@ -181,6 +186,7 @@ public class ApplicationErrorReport implements Parcelable { */ public CrashInfo(Parcel in) { exceptionClassName = in.readString(); + exceptionMessage = in.readString(); throwFileName = in.readString(); throwClassName = in.readString(); throwMethodName = in.readString(); @@ -192,6 +198,7 @@ public class ApplicationErrorReport implements Parcelable { */ public void writeToParcel(Parcel dest, int flags) { dest.writeString(exceptionClassName); + dest.writeString(exceptionMessage); dest.writeString(throwFileName); dest.writeString(throwClassName); dest.writeString(throwMethodName); @@ -203,6 +210,7 @@ public class ApplicationErrorReport implements Parcelable { */ public void dump(Printer pw, String prefix) { pw.println(prefix + "exceptionClassName: " + exceptionClassName); + pw.println(prefix + "exceptionMessage: " + exceptionMessage); pw.println(prefix + "throwFileName: " + throwFileName); pw.println(prefix + "throwClassName: " + throwClassName); pw.println(prefix + "throwMethodName: " + throwMethodName); diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index ae867fb75537..755f9c867c8c 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -8218,12 +8218,19 @@ public final class ActivityManagerService extends ActivityManagerNative implemen report.time = crashData.getTime(); report.crashInfo.stackTrace = throwData.toString(); - // extract the source of the exception, useful for report - // clustering + // Extract the source of the exception, useful for report + // clustering. Also extract the "deepest" non-null exception + // message. + String exceptionMessage = throwData.getMessage(); while (throwData.getCause() != null) { throwData = throwData.getCause(); + String msg = throwData.getMessage(); + if (msg != null && msg.length() > 0) { + exceptionMessage = msg; + } } StackTraceElementData trace = throwData.getStackTrace()[0]; + report.crashInfo.exceptionMessage = exceptionMessage; report.crashInfo.exceptionClassName = throwData.getType(); report.crashInfo.throwFileName = trace.getFileName(); report.crashInfo.throwClassName = trace.getClassName(); |