Merge change 3936 into donut

* changes:
  add exception message to ApplicationErrorReport
This commit is contained in:
Android (Google) Code Review
2009-06-17 13:34:41 -07:00
2 changed files with 17 additions and 2 deletions

View File

@@ -150,6 +150,11 @@ public class ApplicationErrorReport implements Parcelable {
*/ */
public String exceptionClassName; public String exceptionClassName;
/**
* Message stored in the exception.
*/
public String exceptionMessage;
/** /**
* File which the exception was thrown from. * File which the exception was thrown from.
*/ */
@@ -181,6 +186,7 @@ public class ApplicationErrorReport implements Parcelable {
*/ */
public CrashInfo(Parcel in) { public CrashInfo(Parcel in) {
exceptionClassName = in.readString(); exceptionClassName = in.readString();
exceptionMessage = in.readString();
throwFileName = in.readString(); throwFileName = in.readString();
throwClassName = in.readString(); throwClassName = in.readString();
throwMethodName = in.readString(); throwMethodName = in.readString();
@@ -192,6 +198,7 @@ public class ApplicationErrorReport implements Parcelable {
*/ */
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
dest.writeString(exceptionClassName); dest.writeString(exceptionClassName);
dest.writeString(exceptionMessage);
dest.writeString(throwFileName); dest.writeString(throwFileName);
dest.writeString(throwClassName); dest.writeString(throwClassName);
dest.writeString(throwMethodName); dest.writeString(throwMethodName);
@@ -203,6 +210,7 @@ public class ApplicationErrorReport implements Parcelable {
*/ */
public void dump(Printer pw, String prefix) { public void dump(Printer pw, String prefix) {
pw.println(prefix + "exceptionClassName: " + exceptionClassName); pw.println(prefix + "exceptionClassName: " + exceptionClassName);
pw.println(prefix + "exceptionMessage: " + exceptionMessage);
pw.println(prefix + "throwFileName: " + throwFileName); pw.println(prefix + "throwFileName: " + throwFileName);
pw.println(prefix + "throwClassName: " + throwClassName); pw.println(prefix + "throwClassName: " + throwClassName);
pw.println(prefix + "throwMethodName: " + throwMethodName); pw.println(prefix + "throwMethodName: " + throwMethodName);

View File

@@ -8218,12 +8218,19 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
report.time = crashData.getTime(); report.time = crashData.getTime();
report.crashInfo.stackTrace = throwData.toString(); report.crashInfo.stackTrace = throwData.toString();
// extract the source of the exception, useful for report // Extract the source of the exception, useful for report
// clustering // clustering. Also extract the "deepest" non-null exception
// message.
String exceptionMessage = throwData.getMessage();
while (throwData.getCause() != null) { while (throwData.getCause() != null) {
throwData = throwData.getCause(); throwData = throwData.getCause();
String msg = throwData.getMessage();
if (msg != null && msg.length() > 0) {
exceptionMessage = msg;
}
} }
StackTraceElementData trace = throwData.getStackTrace()[0]; StackTraceElementData trace = throwData.getStackTrace()[0];
report.crashInfo.exceptionMessage = exceptionMessage;
report.crashInfo.exceptionClassName = throwData.getType(); report.crashInfo.exceptionClassName = throwData.getType();
report.crashInfo.throwFileName = trace.getFileName(); report.crashInfo.throwFileName = trace.getFileName();
report.crashInfo.throwClassName = trace.getClassName(); report.crashInfo.throwClassName = trace.getClassName();