diff --git a/xpcom/base/nsDebugImpl.cpp b/xpcom/base/nsDebugImpl.cpp index 367281809d6c5de6b8524607e5d387e4d93e8e55..6c7a7f3576a247bba2de264f84fdf3a793d61d5d 100644 --- a/xpcom/base/nsDebugImpl.cpp +++ b/xpcom/base/nsDebugImpl.cpp @@ -182,7 +182,8 @@ enum nsAssertBehavior { NS_ASSERT_SUSPEND, NS_ASSERT_STACK, NS_ASSERT_TRAP, - NS_ASSERT_ABORT + NS_ASSERT_ABORT, + NS_ASSERT_STACK_AND_ABORT }; static nsAssertBehavior GetAssertBehavior() @@ -216,6 +217,9 @@ static nsAssertBehavior GetAssertBehavior() if (!strcmp(assertString, "trap") || !strcmp(assertString, "break")) return gAssertBehavior = NS_ASSERT_TRAP; + if (!strcmp(assertString, "stack-and-abort")) + return gAssertBehavior = NS_ASSERT_STACK_AND_ABORT; + fprintf(stderr, "Unrecognized value of XPCOM_DEBUG_BREAK\n"); return gAssertBehavior; } @@ -342,6 +346,10 @@ NS_DebugBreak(PRUint32 aSeverity, const char *aStr, const char *aExpr, nsTraceRefcntImpl::WalkTheStack(stderr); return; + case NS_ASSERT_STACK_AND_ABORT: + nsTraceRefcntImpl::WalkTheStack(stderr); + // Fall through to abort + case NS_ASSERT_ABORT: Abort(buf.buffer); return;