#elif defined (JUCE_GCC) || defined (JUCE_LINUX)
#define jassertfalse { juce_LogCurrentAssertion; if (JUCE_NAMESPACE::juce_isRunningUnderDebugger()) asm("int $3"); }
#endif
to
#elif defined (JUCE_GCC) || defined (JUCE_LINUX)
#define jassertfalse { juce_LogCurrentAssertion; if (JUCE_NAMESPACE::juce_isRunningUnderDebugger()) kill(0, SIGTRAP); }
#endif
as it is the correct way to break into the debugger under Posix. (asm trick is correct for x86 but not for any other architecture, like PPC or ARM9).
The debugger always catch sigtrap anyway as it’s the way it does for its own breakpoints.
BTW, it should even work on MacOS, so it even simplifies the macro to only 2 cases ( WIN32 and POSIX )
Oh, and under Win32 you should use DebugBreak() instead of asm int 3
Under WinCE (ARM9 in most case), the former will compile, while the latter will not.