/* vim: set shiftwidth=4 tabstop=8 autoindent cindent expandtab: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* interface to expose information about calls to NS_DebugBreak */ #include "nsISupports.idl" /** * For use by consumers in scripted languages (JavaScript, Java, Python, * Perl, ...). * * @note C/C++ consumers who are planning to use the nsIDebug2 interface with * the "@mozilla.org/xpcom;1" contract should use NS_DebugBreak from xpcom * glue instead. * */ [scriptable, uuid(9641dc15-10fb-42e3-a285-18be90a5c10b)] interface nsIDebug2 : nsISupports { /** * Whether XPCOM was compiled with DEBUG defined. This often * correlates to whether other code (e.g., Firefox, XULRunner) was * compiled with DEBUG defined. */ readonly attribute boolean isDebugBuild; /** * The number of assertions since process start. */ readonly attribute long assertionCount; /** * Whether a debugger is currently attached. * Supports Windows + Mac */ readonly attribute bool isDebuggerAttached; /** * Show an assertion and trigger nsIDebug2.break(). * * @param aStr assertion message * @param aExpr expression that failed * @param aFile file containing assertion * @param aLine line number of assertion */ void assertion(in string aStr, in string aExpr, in string aFile, in long aLine); /** * Show a warning. * * @param aStr warning message * @param aFile file containing assertion * @param aLine line number of assertion */ void warning(in string aStr, in string aFile, in long aLine); /** * Request to break into a debugger. * * @param aFile file containing break request * @param aLine line number of break request */ void break(in string aFile, in long aLine); /** * Request the process to trigger a fatal abort. * * @param aFile file containing abort request * @param aLine line number of abort request */ void abort(in string aFile, in long aLine); /** * Request the process to trigger a fatal panic!() from Rust code. * * @param aMessage the string to pass to panic!(). */ void rustPanic(in string aMessage); };