xamarin-macios/runtime
Rolf Bjarne Kvinge 0c43ddc615 Disable managed exception marshaling when the debugger is attached. Fixes #45116. (#1055)
Managed exception marshaling interferes with the debugger, because it adds
exception handlers to executing code, which makes the Mono runtime think an
exception is handled when logically it's not (although technically it is).

The consequence is that the IDEs will only be notified when we re-throw the
exception after catching it, making it impossible for the IDEs to stop when
the exception is thrown (they will instead stop when we re-throw the
exception).

So disable managed exception marshaling (unless the user changed the default
behavior) when a debugger is attached.

This is the same behavior as Xamarin.Android.

https://bugzilla.xamarin.com/show_bug.cgi?id=45116
2016-10-28 19:07:01 +02:00
..
xamarin Disable managed exception marshaling when the debugger is attached. Fixes #45116. (#1055) 2016-10-28 19:07:01 +02:00
.gitignore [mtouch/runtime] Implement support for tvOS extensions. 2016-04-25 18:15:02 -04:00
COOP.md Initial review pass for COOP for watchOS. 2016-05-26 17:47:10 +02:00
Delegates.cs.t4 [runtime] Handle any exceptions whenever we return from managed code. 2016-06-08 20:05:54 +02:00
EXCEPTIONS.md [runtime] Improve documentation about exceptions a little bit. 2016-06-08 20:11:07 +02:00
Makefile Create iOS 32-bit dylibs with min iOS version 8.0. Fixes #43102. (#731) 2016-09-01 15:45:23 +02:00
README.md Initial review pass for COOP for watchOS. 2016-05-26 17:47:10 +02:00
bindings-generator.cs [GameplayKit] Update from Xcode8 Beta 1 to Beta 6 (#689) 2016-08-30 15:32:46 -04:00
bindings-generator.csproj Build our runtime. 2016-04-24 14:47:24 -04:00
bindings.h [GameplayKit] Update from Xcode8 Beta 1 to Beta 6 (#689) 2016-08-30 15:32:46 -04:00
bindings.m [runtime] Use xamarin_process_nsexception instead of xamarin_throw_ns_exception in our generated bindings. (#84) 2016-05-26 13:36:56 +02:00
delegates.h.t4 Build our runtime. 2016-04-24 14:47:24 -04:00
delegates.inc.t4 Build our runtime. 2016-04-24 14:47:24 -04:00
delegates.t4 Use ExceptionDispatchInfo to keep stack traces when unhandled exceptions are marshaled. Improves bug #45742 a bit. (#1040) 2016-10-27 20:03:11 +02:00
exports.t4 Disable managed exception marshaling when the debugger is attached. Fixes #45116. (#1055) 2016-10-28 19:07:01 +02:00
extension-main.m [mtouch/runtime] Implement support for tvOS extensions. 2016-04-25 18:15:02 -04:00
launcher.h Build our runtime. 2016-04-24 14:47:24 -04:00
launcher.m [XM] Fix 44707 by fixing launcher and mmp (#971) 2016-10-13 10:42:05 -05:00
libmonotouch.csproj Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
libxammac.csproj [Mac] Add support for os x extensions (#83) 2016-05-25 17:20:33 -04:00
main-internal.h [Mac] Add support for os x extensions (#83) 2016-05-25 17:20:33 -04:00
mono-runtime.h.t4 [runtime] Catch and process managed exceptions that are thrown in reverse P/Invoke (delegate) callbacks. 2016-06-08 20:05:54 +02:00
mono-runtime.m.t4 [runtime] Use printf on watchOS, NSLog doesn't shown up (by default) (#772) 2016-09-06 16:55:23 -04:00
monotouch-debug.h [runtime] Only enable debugging on watchOS devices if a native debugger is also attached. 2016-09-05 10:05:00 +02:00
monotouch-debug.m [runtime] Fix support for debugging on watch device with multiple IP addresses. Fixes #44568. (#898) 2016-09-27 08:07:31 -04:00
monotouch-main.m [runtime] Remove deprecated and ignored mono option. (#1019) 2016-10-27 16:04:19 -04:00
monotouch-support.h [runtime] Add dummy _stret symbols for iOS/ARM64 (#66) 2016-05-18 16:51:45 -04:00
nsstring-localization.m Build our runtime. 2016-04-24 14:47:24 -04:00
product.h Build our runtime. 2016-04-24 14:47:24 -04:00
runtime-internal.h [runtime] Use printf on watchOS, NSLog doesn't shown up (by default) (#772) 2016-09-06 16:55:23 -04:00
runtime.m Disable managed exception marshaling when the debugger is attached. Fixes #45116. (#1055) 2016-10-28 19:07:01 +02:00
shared.h Share the same block descriptors between copies of a block. Fixes #43592. (#683) 2016-08-26 19:22:38 +02:00
shared.m Share the same block descriptors between copies of a block. Fixes #43592. (#683) 2016-08-26 19:22:38 +02:00
slinked-list.h Build our runtime. 2016-04-24 14:47:24 -04:00
trampolines-i386-asm.s [runtime] Make the existing trampolines exception-aware. 2016-05-17 11:20:26 +02:00
trampolines-i386-objc_msgSend-copyframe.inc [runtime] Don't store xmm registers where we store other registers. 2016-05-17 11:24:02 +02:00
trampolines-i386-objc_msgSend-post.inc [runtime] Make sure the stack is correctly aligned to 16 bytes. 2016-05-17 11:24:03 +02:00
trampolines-i386-objc_msgSend-pre.inc [runtime] Make sure the stack is correctly aligned to 16 bytes. 2016-05-17 11:24:03 +02:00
trampolines-i386-objc_msgSend.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386-objc_msgSendSuper.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386-objc_msgSendSuper_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386-objc_msgSend_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-i386.h Build our runtime. 2016-04-24 14:47:24 -04:00
trampolines-i386.m [runtime] Simplify stret check in the x86 trampolines. 2016-10-13 17:35:50 +02:00
trampolines-internal.h [runtime] Handle any exceptions whenever we return from managed code. 2016-06-08 20:05:54 +02:00
trampolines-invoke.m Disable managed exception marshaling when the debugger is attached. Fixes #45116. (#1055) 2016-10-28 19:07:01 +02:00
trampolines-varargs.h Build our runtime. 2016-04-24 14:47:24 -04:00
trampolines-varargs.m [runtime] Use printf on watchOS, NSLog doesn't shown up (by default) (#772) 2016-09-06 16:55:23 -04:00
trampolines-x86_64-asm.s [runtime] Make the existing trampolines exception-aware. 2016-05-17 11:20:26 +02:00
trampolines-x86_64-objc_msgSend-copyframe.inc Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend-post.inc Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend-pre.inc Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSendSuper.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSendSuper_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64-objc_msgSend_stret.s Implement support for exception marshalling. 2016-05-17 11:23:48 +02:00
trampolines-x86_64.h Build our runtime. 2016-04-24 14:47:24 -04:00
trampolines-x86_64.m [runtime] Fix returning structs with size < 8. 2016-10-13 17:35:51 +02:00
trampolines.m [runtime] Use printf on watchOS, NSLog doesn't shown up (by default) (#772) 2016-09-06 16:55:23 -04:00
xamarin-support.m Fix xamarin_log to not treat % as format specifiers. Fixes #45046. (#952) 2016-10-06 14:01:14 +02:00

README.md

Native runtime

This directory contains the native runtime for Xamarin.iOS and Xamarin.Mac.

Cooperative GC

See COOP.md

Generated code

A few files are generated automatically:

delegates.h|inc, Delegates.cs

These files contain the code required to glue the native runtime and the managed runtime.

mono-runtime.m, xamarin/mono-runtime.h

These files contain code that makes other code, consumers of the mono runtime, oblivious to whether the mono runtime is linked statically, dynamically, or using dlopen at runtime.

If you need to use a new function from the Mono headers, add it to exports.t4.

If you need a new enum / constant / typedef / etc, add it to mono-runtime.h.t4.

Shipped headers

These are the headers shipped with XI/XM (they're not for public consumption, but we need them to build generated code on customers machine, in particular main.m and registrar.m)

xamarin/runtime.h xamarin/trampolines.h xamarin/main.h xamarin/xamarin.h