diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index b0ffc3a88a2..0186798073b 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -1182,6 +1182,10 @@ void _OS::alert(const String &p_alert, const String &p_title) { OS::get_singleton()->alert(p_alert, p_title); } +void _OS::crash(const String &p_message) { + CRASH_NOW_MSG(p_message); +} + bool _OS::request_permission(const String &p_name) { return OS::get_singleton()->request_permission(p_name); } @@ -1399,6 +1403,7 @@ void _OS::_bind_methods() { ClassDB::bind_method(D_METHOD("set_use_file_access_save_and_swap", "enabled"), &_OS::set_use_file_access_save_and_swap); ClassDB::bind_method(D_METHOD("alert", "text", "title"), &_OS::alert, DEFVAL("Alert!")); + ClassDB::bind_method(D_METHOD("crash", "message"), &_OS::crash); ClassDB::bind_method(D_METHOD("set_thread_name", "name"), &_OS::set_thread_name); ClassDB::bind_method(D_METHOD("get_thread_caller_id"), &_OS::get_thread_caller_id); diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index c0339de9434..d2c611b91fa 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -356,6 +356,7 @@ public: String get_cache_dir() const; void alert(const String &p_alert, const String &p_title = "ALERT!"); + void crash(const String &p_message); void set_screen_orientation(ScreenOrientation p_orientation); ScreenOrientation get_screen_orientation() const; diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml index f1e1baa3596..107402314ee 100644 --- a/doc/classes/OS.xml +++ b/doc/classes/OS.xml @@ -43,6 +43,13 @@ [b]Note:[/b] This method is implemented on Linux, macOS and Windows. + + + + + Crashes the engine (or the editor if called within a [code]tool[/code] script). This should [i]only[/i] be used for testing the system's crash handler, not for any other purpose. For general error reporting, use (in order of preference) [method @GDScript.assert], [method @GDScript.push_error] or [method alert]. See also [method kill]. + + @@ -714,7 +721,7 @@ - Kill (terminate) the process identified by the given process ID ([code]pid[/code]), e.g. the one returned by [method execute] in non-blocking mode. + Kill (terminate) the process identified by the given process ID ([code]pid[/code]), e.g. the one returned by [method execute] in non-blocking mode. See also [method crash]. [b]Note:[/b] This method can also be used to kill processes that were not spawned by the game. [b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows.