> On 5 Aug 2015, at 18:19, Alexander Köplinger <alex.koeplin...@outlook.com> > wrote: > > 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). > Nice to see that bockbuild now has some usage notes in the readme. It says:
$ git clone g...@github.com:mono/bockbuild bockbuild $ cd bockbuild/profiles/mono-mac-release $ MONO_VERSION=4.9.9 ./mono-mac-release.py --build --arch darwin-32 Not sure if that generates a symbolicated build. > -- 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 _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list