diff --git a/nx/include/switch/kernel/detect.h b/nx/include/switch/kernel/detect.h index 0f9413e1..8109f3f8 100644 --- a/nx/include/switch/kernel/detect.h +++ b/nx/include/switch/kernel/detect.h @@ -2,3 +2,4 @@ bool kernelAbove200(void); bool kernelAbove300(void); bool kernelAbove400(void); +bool detectDebugger(void); diff --git a/nx/source/kernel/detect.c b/nx/source/kernel/detect.c index afeda2b6..3e2c07ed 100644 --- a/nx/source/kernel/detect.c +++ b/nx/source/kernel/detect.c @@ -33,3 +33,9 @@ bool kernelAbove400(void) { _CacheValues(); return g_IsAbove400; } + +bool detectDebugger(void) { + u64 tmp; + svcGetInfo(&tmp, 8, 0, 0); + return !!tmp; +} diff --git a/nx/source/services/fatal.c b/nx/source/services/fatal.c index f27d34e0..c7913de9 100644 --- a/nx/source/services/fatal.c +++ b/nx/source/services/fatal.c @@ -4,6 +4,10 @@ void fatalSimple(Result err) { Result rc = 0; + if (detectDebugger()) { + svcBreak(0x80000000, err, 0); + } + if (!smHasInitialized()) { rc = smInitialize(); }