[M3commit] CVS Update: cm3
Jay Krell
jkrell at elego.de
Sun Sep 19 16:50:29 CEST 2010
CVSROOT: /usr/cvs
Changes by: jkrell at birch. 10/09/19 16:50:29
Added files:
cm3/m3-libs/m3core/src/runtime//common/: RTDebugC.c
Log message:
Provide RTDebug.IsDebuggerPresent and RTDebug.DebugBreak.
Win32:
RTDebug.IsDebuggerPresent => IsDebuggerPresent
RTDebug.DebugBreak => DebugBreak
Apple:
RTDebug.IsDebuggerPresent => experimentally derived on my Intel 10.5 system.
(could also test ppc emulation)
sigaction(sigtrap, 0, &sa);
peek at sa
RTDebug.DebugBreak => works
sigaction(sigtrap, 0, &old);
signal(sigtrap, sigign);
raise(sigtrap);
sigaction(sigtrap, &old, 0);
others:
RTDebug.IsDebuggerPresent => false
experimented on Linux and found Apple approach not viable
RTDebug.DebugBreak => works, same as Apple
smaller alternative would be definitely appreciated
note that DebugBreak must be trivially continuable in debugger
abort() is not it!
bonus points if it is macro or builtin and small for C so the break occurs
right in the code; on Win32 there is also __debugbreak() which
generates one instruction right there, very nice
(though notice that Win32 DebugBreak is "fatal" not in a debuger,
whereas my Posix version isn't, because I can't implement
IsDebuggerPresent)
bonus points also if IsDebuggerPresent is fast, and
updates itself as debugger is detached/reattached,
though current version doesn't; Win32 does
More information about the M3commit
mailing list