You can build the MDK with 
https://github.com/mono/bockbuild#the-mono-mac-distribution, but I'm not sure 
if that includes debug symbols (I think it does).
-- Alex

> From: jonat...@mugginsoft.com
> Date: Wed, 5 Aug 2015 18:06:37 +0100
> To: Mono-devel-list@lists.ximian.com
> Subject: Re: [Mono-dev] Compiling Mono with debug symbols to diagnose an      
> issue with embedded Mono 4.0.2.5
> 
> 
> > On 5 Aug 2015, at 02:12, jean-michel.perr...@csiro.au wrote:
> > 
> > I am trying to debug C code, mostly to step through the mono runtime itself.
> I too would like to debug the Mono runtime itself and so would really, 
> really, really like to able to build an MDK with debug symbols and source 
> code references.
> 
> Why do I need to debug the runtime?
> I have written an Obj-C > C# bridge utilising the runtime and in some 
> situations I cannot figure out what the correct embedded API function 
> signatures are for more complex generic managed methods. Being able to debug 
> the runtime would give me some insight into what is going on in the method 
> signature search process.
> 
> >  That said, I would not at all refuse a howto guide for mixed mode (C and 
> > C#) debugging on Linux (not possible so far as I know). I may try to give a 
> > try on Windows with Visual Studio, but as a fallback option as this issue 
> > may not be reproducible on it anyway.
> 
> Here is my take on debugging Mono based on working on OS X.
> 
> C
> ==
> 
> On the Obj-C side (Obj-C is a strict superset of C) I should be able to step 
> into the Mono runtime code via the Xcode side if my Mono runtime build 
> supported debug symbols and their source code references. I reckon that most 
> C IDEs should be fit to do the same.
> 
> 
> C#
> ==
> 
> I don’t know of a way to seamlessly debug both C and C# via the same IDE on 
> OS X (perhaps VS can so this on windows).
> To debug the managed code in my OS X app I do roughly the following (more 
> detail follows in the notes below).
> 
> 1. Configure the OS X app embedded Mono code to use the Mono soft debugger 
> (this is a remote capable software debugger that runs over TCP-IP see 
> http://www.mono-project.com/docs/advanced/runtime/docs/soft-debugger/).
> 2. Run my OS X outside of my Xcode IDE. If I don’t do this then the signals 
> generated by the debugee tend to get caught by the IDE debugger rather than 
> the Mono soft debugger.
> 3. Fire up Xamarin Studio (XS) on a Windows machine (in my case a Windows VM 
> on the same physical machine but a networked base PC should work just fine 
> too).
> 4. In XS connect to the remote debugger, set breakpoints etc.
> 5. Exercise the OS X app and trigger breakpoints in XS.
> 
> Getting the soft debugger/Xamarin setup correctly can be fiddly but it does 
> work.
> It may be possible to debug the managed code by Using Xamarin Studio on OS X 
> or Linux but in my case (as I was building the Managed code assemblies on the 
> Windows VM anyway) it was easiest to run XS on Windows.
> 
> Debugging Mono Embedded API
> ===========================
> 
> The embedded managed code can be debugged (including breakpoints and single 
> stepping) using Xamarin Studio.
> 
> 1. Config OS X app to attach to Mono soft Debugger.
> 
> Xamarin Studio must be running on machine with IP 192.168.1.72 (in this case 
> my windows VM)
>  [DBManagedEnvironment setRuntimeOptions:@{@"address" : @"192.168.1.72", 
> @"port" : @"10000", @"loglevel" : @"0"}];
> 
> 2. Call DBManagedEnvironment +setRuntimeOptions: with IP address and port of 
> Windows VM running the Xamarin Studio debugger.
> 
> + (void)setRuntimeOptions:(NSDictionary *)options
> {
>     // NOTE: be sure to call this before -initWithDomainName
>     
>     // for info on these options see man mono
>     // the debugger can be configured either as a client or a server
>     NSString *address = options[@"address"]?:@"127.0.0.1";
>     NSString *port = options[@"port"]?:@"10000";
>     NSString *server = options[@"server"]?:@"n";
>     NSString *suspend = options[@"suspend"]?:@"y";
>     NSString *loglevel = options[@"loglevel"]?:@"1";
>     NSString *timeout = options[@"timeout"]?:@"10";
>     
>     NSString *agent = [NSString 
> stringWithFormat:@"--debugger-agent=transport=dt_socket,address=%@:%@,server=%@,suspend=%@,loglevel=%@,timeout=%@",
>  address, port, server, suspend, loglevel,timeout];
>     const char* jit_options[] = {
>         "--soft-breakpoints",
>         [agent UTF8String]
>     };
>     
>     mono_jit_parse_options(2, (char**)jit_options);
>     
>     mono_debug_init(MONO_DEBUG_FORMAT_MONO);
> }
> 
> see 
> https://github.com/ThesaurusSoftware/Dubrovnik/blob/master/Framework/XCode/DBManagedEnvironment.m#L167
> 
> 
> 3. Run app outside of Xcode. The app will pause if the remote debugger is not 
> responding.
> 4. Run Xamarin Studio (preconfigure env var to enable the soft debug menu if 
> it is not visible) on the VM and load the solution being debugged on OS X.
> 5. Set start up project as appropriate (May be better to have a dummy exe 
> project rather than rebuild this all the time).
> 6. Select Run - Run with - Custom command Mono soft debugger.
> 7. Enter IP address and port.
> 8. Click Listen.
> 9. Set breakpoints as normal.
> 
> Notes on Use of the Mono Soft Debugger
> ======================================
> 
> See http://www.jeffongames.com/2012/03/debugging-embedded-mono/
> http://mono.1490590.n4.nabble.com/remote-debugging-a-hello-world-application-td4591791.html
> 
> The debugee should connect to the debugger on the configured listener IP and 
> port.
> The Windows firewall will need to allow the incoming connection.
> To check if the connection is up and running;
> 
> // manual check if connection to debugger listener can be established
> teqlnet 192.168.1.72 10000
> 
> // check state of established network connections 
> netstat -n -f inet
> 
> For the soft debugger signal handler to work correctly the app must be 
> executed outside of Xcode.
> Other signal handlers, such as those installed by HockeyApp, must be disabled 
> while the soft debugger is in use.
> Remember to use a debug build of the managed code!
> 
> http://www.mono-project.com/docs/advanced/runtime/docs/soft-debugger/
> 
> HTH
> 
> Jonathan
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
                                          
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to