I’ve been having a hard time debugging a plugin for Rhino for Mac (5), particularly on the Eto side. The issues are primarily around:
- Older Eto version
- Older Mono version
- Managing referenced assemblies (due to Mono version)
While I can work around all of these things, I don’t seem to get any exception breaks or stack traces when something goes wrong - it just quietly doesn’t work. Have I set up my debugging configuration wrong?
An example of this would be porting a Rhino 6 compatible plugin that used a NumericStepper. The UI is all contained in an isolated dll, and tests and runs fine in a test (non-rhino) environment with nuget packages for Eto.
When building for Rhino for Mac (5), it builds fine, and runs, but the Rhino Panel loads as blank. No exceptions or diagnostics - and hence I’ve then gone through the code in a slow binary search of commenting out bits and pieces and printing ‘progress’ to system.diagnostics to attempt to figure out when it crashes. The same applies to debugging the mono environment.
My fault, of course, for referencing a higher version of Eto but I would have loved to be able to find the issue more easily.
On the mono version side - there seem to be some more recent additions to the framework that aren’t implemented - for example all the functions in System.Net.NetworkInformation throw NotImplementedException, though now appear to be fully implemented. (https://github.com/mono/mono/tree/master/mcs/class/System/System.Net.NetworkInformation)
So the questions are:
- Is there a better way of getting diagnostic information? I tried dtruss but didn’t find any relevant output.
- Will Rhino 6 for Mac use a newer Mono version?
- And similarly will it use a newer Eto version?
I’ll look through the WIP shortly but wanted to raise the debugging issue first and see if I’m missing something.
PS - On the other hand, when it does work, having a cross platform plugin UI is fantastic!