> On 6 Aug 2015, at 15:34, Howard Rubin <howard.ru...@hl.konicaminolta.us> > wrote: > > You have to create the generic method. That can be done in C#, which it > sounds like you're already doing. > If you'd like to do that in the calling C++/mono (my preferred solution), > have a look at > https://gist.github.com/gedim21/8d86ba8e59ac5d8ed0ee
Thanks for the link. This is more or less what I am doing - will need to review the code again. For most of my unit test signatures what I have works fine - only some more complex ones are causing trouble Jonathan > > Howard Rubin > > -----Original Message----- > From: Jonathan Mitchell [mailto:jonat...@mugginsoft.com] > Sent: Thursday, August 06, 2015 3:03 AM > To: Howard Rubin <howard.ru...@hl.konicaminolta.us> > 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 21:55, Howard Rubin <howard.ru...@hl.konicaminolta.us> > wrote: >> >> Did the problem situation have to do with generics? > > IIRC one of the problem signatures was > > public void SendTelemetry(string url, string productCode, params > KeyValuePair<string, object>[] additionalData) > > I use a code generator (which can handle moderate range of signatures > without issue) to parse > > https://github.com/ThesaurusSoftware/Dubrovnik/blob/master/dotNET/UnitTests/ > Dubrovnik.UnitTests/ReferenceObject.cs > > into > > https://github.com/ThesaurusSoftware/Dubrovnik/blob/master/dotNET/UnitTests/ > GeneratedObjC/Dubrovnik_UnitTests_ReferenceObject.m > > For the problem signature I had to resort to using a managed helper function > with a simpler signature. > >> >> -----Original Message----- >> From: Jonathan Mitchell [mailto:jonat...@mugginsoft.com] >> Sent: Wednesday, August 05, 2015 1:19 PM >> To: Howard Rubin <howard.ru...@hl.konicaminolta.us> >> Subject: Re: [Mono-dev] Compiling Mono with debug symbols to diagnose >> an issue with embedded Mono 4.0.2.5 >> >> Hi Howard >> >> Thanks for that. >> I have some code that does something similar but I am still running >> into situations where I just cannot get the signature figured out. >> IIRC the signature I used agreed with mono_method_full_name() but the >> method lookup still failed. >> I will take another crack at it and hopefully inspiration will strike. >> >> Thanks again >> >> Jonathan >> >> >>> On 5 Aug 2015, at 20:09, Howard Rubin >>> <howard.ru...@hl.konicaminolta.us> >> wrote: >>> >>> Hi Jonathan, >>> At the risk of defeating my purpose of debugging mono, here’s what I >>> use to “figure out what the correct embedded API function signatures”. >>> Hope this helps, Howard Rubin >>> >>> static void ListMethods(MonoClass* theClass) { >>> void* iterM = NULL; >>> MonoMethod* mm; >>> while ((mm = mono_class_get_methods(theClass, &iterM)) != NULL) { >>> const char* name = mono_method_get_name(mm); >>> printf("mono_method_get_name returned %s \"%s\"\n", name, >> mono_method_full_name(mm, true)); >>> } >>> } >>> >>> From: mono-devel-list-boun...@lists.ximian.com >>> [mailto:mono-devel-list-boun...@lists.ximian.com] On Behalf Of >>> Alexander Köplinger >>> Sent: Wednesday, August 05, 2015 11:19 AM >>> 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 >>> >>> 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-app >>>> lication-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 >>> <Untitled attachment 00299.txt> > > > _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list