in src/csharp/MonoDebugSession.cs [781:815]
private void SetExceptionBreakpoints(dynamic exceptionOptions)
{
if (exceptionOptions != null) {
// clear all existig catchpoints
foreach (var cp in _catchpoints) {
_session.Breakpoints.Remove(cp);
}
_catchpoints.Clear();
var exceptions = exceptionOptions.ToObject<dynamic[]>();
for (int i = 0; i < exceptions.Length; i++) {
var exception = exceptions[i];
string exName = null;
string exBreakMode = exception.breakMode;
if (exception.path != null) {
var paths = exception.path.ToObject<dynamic[]>();
var path = paths[0];
if (path.names != null) {
var names = path.names.ToObject<dynamic[]>();
if (names.Length > 0) {
exName = names[0];
}
}
}
if (exName != null && exBreakMode == "always") {
_catchpoints.Add(_session.Breakpoints.AddCatchpoint(exName));
}
}
}
}