Bug 24203 - Need a Debugger Visualizer for Dictionary<K, V>
Summary: Need a Debugger Visualizer for Dictionary<K, V>
Status: RESOLVED FIXED
Alias: None
Product: iOS
Classification: Xamarin
Component: Tools ()
Version: XI 8.4.0
Hardware: PC Mac OS
: Normal normal
Target Milestone: Untriaged
Assignee: Sebastien Pouliot
URL:
Depends on:
Blocks:
 
Reported: 2014-10-31 16:20 UTC by Eric Weinschenk
Modified: 2014-11-27 10:28 UTC (History)
5 users (show)

Tags:
Is this bug a regression?: ---
Last known good build:


Attachments
screenshot of visual studio (153.88 KB, image/png)
2014-11-03 10:56 UTC, Eric Weinschenk
Details
Screenshot (81.53 KB, image/png)
2014-11-03 10:59 UTC, David Karlaš
Details


Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.


Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:
Status:
RESOLVED FIXED

Description Eric Weinschenk 2014-10-31 16:20:28 UTC
When inspecting lists and dictionaries its too hard to see their contents. Is there a way to do it I dont know about?
Comment 1 Eric Weinschenk 2014-10-31 16:22:41 UTC
This error printed in the console while i was inspecting a dictionary, is it related?

System.NotSupportedException: Operation is not supported.
  at Mono.Debugging.Soft.SoftDebuggerAdaptor.GetValueType (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object val) [0x000e2] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs:1326 
  at Mono.Debugging.Soft.SoftEvaluationContext.RuntimeInvoke (Mono.Debugger.Soft.MethodMirror method, System.Object target, Mono.Debugger.Soft.Value[] values) [0x0010f] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftEvaluationContext.cs:154 
  at Mono.Debugging.Soft.PropertyValueReference.GetValue (Mono.Debugging.Evaluation.EvaluationContext ctx) [0x00033] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/PropertyValueReference.cs:121 
  at Mono.Debugging.Evaluation.ValueReference.OnCreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00025] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ValueReference.cs:133 
  at Mono.Debugging.Evaluation.ValueReference.CreateObjectValue (Mono.Debugging.Client.EvaluationOptions options) [0x00059] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ValueReference.cs:104 System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
  at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x0026d] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:2083 
  at System.String.Format (IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1977 
  at System.String.Format (System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1972 
  at Mono.Debugging.Evaluation.EvaluatorException..ctor (System.String msg, System.Object[] args) [0x00000] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs:207 
  at Mono.Debugging.Soft.SoftDebuggerAdaptor.CreateValue (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object type, System.Object[] args) [0x000e0] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs:453 
  at Mono.Debugging.Evaluation.ObjectValueAdaptor.GetProxyObject (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object obj) [0x0017d] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs:1152 System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
  at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x0026d] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:2083 
  at System.String.Format (IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1977 
  at System.String.Format (System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1972 
  at Mono.Debugging.Evaluation.EvaluatorException..ctor (System.String msg, System.Object[] args) [0x00000] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs:207 
  at Mono.Debugging.Soft.SoftDebuggerAdaptor.CreateValue (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object type, System.Object[] args) [0x000e0] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs:453 
  at Mono.Debugging.Evaluation.ObjectValueAdaptor.GetProxyObject (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object obj) [0x0017d] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs:1152 System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
  at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x0026d] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:2083 
  at System.String.Format (IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1977 
  at System.String.Format (System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1972 
  at Mono.Debugging.Evaluation.EvaluatorException..ctor (System.String msg, System.Object[] args) [0x00000] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs:207 
  at Mono.Debugging.Soft.SoftDebuggerAdaptor.CreateValue (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object type, System.Object[] args) [0x000e0] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs:453 
  at Mono.Debugging.Evaluation.ObjectValueAdaptor.GetProxyObject (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object obj) [0x0017d] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs:1152 System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
  at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x0026d] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:2083 
  at System.String.Format (IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1977 
  at System.String.Format (System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1972 
  at Mono.Debugging.Evaluation.EvaluatorException..ctor (System.String msg, System.Object[] args) [0x00000] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs:207 
  at Mono.Debugging.Soft.SoftDebuggerAdaptor.CreateValue (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object type, System.Object[] args) [0x000e0] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs:453 
  at Mono.Debugging.Evaluation.ObjectValueAdaptor.GetProxyObject (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object obj) [0x0017d] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs:1152
Comment 2 Arpit Jha 2014-11-03 01:06:02 UTC
We have checked this issue and unable to reproduce it.

We tried to reproduce with the help of bug description and observed that able to dubug dictionary  successfully .

Screencast regarding same:
http://www.screencast.com/t/5kxGvJ2w37Q

Could you please let me know if I missed anything to reproduce ?

Environment Info:
=== Xamarin Studio ===

Version 5.5.3 (build 6)
Installation UUID: 6ea47b0d-1852-4aaf-808d-373ff0a5002b
Runtime:
	Mono 3.10.0 ((detached/e204655)
	GTK+ 2.24.23 (Raleigh theme)

	Package version: 310000023

=== Apple Developer Tools ===

Xcode 6.0.1 (6528)
Build 6A317

=== Xamarin.Mac ===

Version: 1.10.0.18 (Business Edition)

=== Xamarin.Android ===

Version: 4.18.0 (Business Edition)
Android SDK: /Users/jatin66/Desktop/Backup/android-sdk-macosx
	Supported Android versions:
		1.6   (API level 4)
		2.1   (API level 7)
		2.2   (API level 8)
		2.3   (API level 10)
		3.0   (API level 11)
		3.1   (API level 12)
		3.2   (API level 13)
		4.0   (API level 14)
		4.0.3 (API level 15)
		4.1   (API level 16)
		4.2   (API level 17)
		4.3   (API level 18)
		4.4   (API level 19)
Java SDK: /usr
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

=== Xamarin.iOS ===

Version: 8.4.0.15 (Business Edition)
Hash: 08968c4
Branch: 
Build date: 2014-10-20 21:48:06-0400

=== Build Information ===

Release ID: 505030006
Git revision: fbe3e9453daf6a3bb9a9709ed22bec35f7c9056b
Build date: 2014-10-23 13:08:38-04
Xamarin addins: e44add2b39de4dd57c0742bb2e620dfad84c64c6

=== Operating System ===

Mac OS X 10.10.0
Darwin Jatin66s-iMac.local 14.0.0 Darwin Kernel Version 14.0.0
    Fri Sep 19 00:26:44 PDT 2014
    root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64
Comment 3 Eric Weinschenk 2014-11-03 10:46:19 UTC
Hello,

The screencast you sent matches what I can see on my development environment, but that isn't what I'm pointing out.

On VisualStudio, when you inspect a dictionary value, you see a list of the key value pairs in the dictionary - so you can easily match keys to values.

Your solution shows them in two seperate lists, which you have to drill down very far to reach, plus they have a bunch of empty slots per the dictionary's implementation.

Visual studio accomplishes this by expanding all IEnumerables on demand via a tiny button. Then it calls ToString() on all the elements. This is very handy, for debugging a list of "People" objects which might have "Last, First" as their ToString instead of showing a list of "{Namespace.People}" over and over again. And KeyValuePair<string, string> has a default implementation of ToString() which shows "{"key", "value"}.

This is more of a feature request than a bug, but your quick watch as it currently compares to Visual Studio is very lacking.

I'll try to produce a screenshot for you coming up soon.

Thanks.
Comment 4 Eric Weinschenk 2014-11-03 10:56:22 UTC
Created attachment 8596 [details]
screenshot of visual studio
Comment 5 David Karlaš 2014-11-03 10:59:37 UTC
Created attachment 8597 [details]
Screenshot

Hi Eric,

what you probably want is something like my screenshot.

If you are not seeing dictionary like in my screenshot there are two possible reasons.
1) You have setting "Allow implicit property evaluation and method invocation" disabled in Preferences->Projects->Debugger. If you have same setting disabled in VS behaviour is same(last time I checked).
2) This is a bug and I think this is more likely what you are seeing based on exception that you pasted in second comment. Can you make small sample program that causes that exception? I think is it's depending on key or value type. Or maybe first try with small sample like in my screenshot.

Thank you,
David
Comment 6 Eric Weinschenk 2014-11-03 11:03:58 UTC
Hi David,

Yes, your screenshot is what I want.

I just checked my settings and they are all on.

Arpit's sample reproduces the issue for you already - so you can use that?
Comment 7 David Karlaš 2014-11-03 11:09:21 UTC
Arpit has "Allow implicit property evaluation and method invocation" setting disabled, that is why he is not seeing DebuggerTypeProxy values.
Comment 8 Eric Weinschenk 2014-11-03 11:13:38 UTC
Can arpit produce a screenshot on version 5.6.2 showing it working?
Comment 9 Arpit Jha 2014-11-04 00:22:38 UTC
Hi Erick,

I have checked this issue with the help of comment 3.dictionary object showing key value pair in debugger successfully.

Note: Dictionary key vale in debugger showing successfully in stable (5.5.3) and 5.6.2 .

Screencast regarding same:
XS(5.5.3) : http://www.screencast.com/t/EuorWMcRjmCV
XS(5.6.2):  http://www.screencast.com/t/KsIomhe1

Could you please provide us a sample project ,So that I can able to reproduce at my end?

Environment Info:
=== Xamarin Studio ===

Version 5.5.3 (build 6)
Installation UUID: 6ea47b0d-1852-4aaf-808d-373ff0a5002b
Runtime:
    Mono 3.10.0 ((detached/e204655)
    GTK+ 2.24.23 (Raleigh theme)

    Package version: 310000023

=== Apple Developer Tools ===

Xcode 6.0.1 (6528)
Build 6A317

=== Xamarin.Mac ===

Version: 1.10.0.18 (Business Edition)

=== Xamarin.Android ===

Version: 4.18.0 (Business Edition)
Android SDK: /Users/jatin66/Desktop/Backup/android-sdk-macosx
    Supported Android versions:
        1.6   (API level 4)
        2.1   (API level 7)
        2.2   (API level 8)
        2.3   (API level 10)
        3.0   (API level 11)
        3.1   (API level 12)
        3.2   (API level 13)
        4.0   (API level 14)
        4.0.3 (API level 15)
        4.1   (API level 16)
        4.2   (API level 17)
        4.3   (API level 18)
        4.4   (API level 19)
Java SDK: /usr
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

=== Xamarin.iOS ===

Version: 8.4.0.15 (Business Edition)
Hash: 08968c4
Branch: 
Build date: 2014-10-20 21:48:06-0400

=== Build Information ===

Release ID: 505030006
Git revision: fbe3e9453daf6a3bb9a9709ed22bec35f7c9056b
Build date: 2014-10-23 13:08:38-04
Xamarin addins: e44add2b39de4dd57c0742bb2e620dfad84c64c6

=== Operating System ===

Mac OS X 10.10.0
Darwin Jatin66s-iMac.local 14.0.0 Darwin Kernel Version 14.0.0
    Fri Sep 19 00:26:44 PDT 2014
    root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64
Comment 10 Eric Weinschenk 2014-11-04 10:16:45 UTC
I won't be able to make a sample project for you. I know this isn't working and I'm not sure why. I gave you a stack trace, but I can't confirm that it's related. I hope you can figure this out cause I really rely on this feature and it's not working.
Comment 11 David Karlaš 2014-11-04 10:24:50 UTC
I'm wondering if you create simple project like one Arpit is using(Dictionary<string,int>). Is that also not working for you? Or is it just specific project/key/value type that is not working?
Comment 12 Mikayla Hutchinson [MSFT] 2014-11-04 15:42:25 UTC
What kind of app is it? Maybe the linker is stripping out the proxy.
Comment 13 Eric Weinschenk 2014-11-08 13:09:04 UTC
is an iPad app. Still happening by the way:



System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
  at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x0026d] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:2083 
  at System.String.Format (IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1977 
  at System.String.Format (System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1972 
  at Mono.Debugging.Evaluation.EvaluatorException..ctor (System.String msg, System.Object[] args) [0x00000] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs:207 
  at Mono.Debugging.Soft.SoftDebuggerAdaptor.CreateValue (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object type, System.Object[] args) [0x000e0] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs:453 
  at Mono.Debugging.Evaluation.ObjectValueAdaptor.GetProxyObject (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object obj) [0x0017d] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs:1152 System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
  at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x0026d] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:2083 
  at System.String.Format (IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1977 
  at System.String.Format (System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1972 
  at Mono.Debugging.Evaluation.EvaluatorException..ctor (System.String msg, System.Object[] args) [0x00000] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs:207 
  at Mono.Debugging.Soft.SoftDebuggerAdaptor.CreateValue (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object type, System.Object[] args) [0x000e0] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs:453 
  at Mono.Debugging.Evaluation.ObjectValueAdaptor.GetProxyObject (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object obj) [0x0017d] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs:1152 System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
  at System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) [0x0026d] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:2083 
  at System.String.Format (IFormatProvider provider, System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1977 
  at System.String.Format (System.String format, System.Object[] args) [0x00000] in /private/tmp/source-mono-mac-3.10.0-branch/bockbuild-mono-3.10.0-branch/profiles/mono-mac-xamarin/build-root/mono-3.10.0/mcs/class/corlib/System/String.cs:1972 
  at Mono.Debugging.Evaluation.EvaluatorException..ctor (System.String msg, System.Object[] args) [0x00000] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ExpressionEvaluator.cs:207 
  at Mono.Debugging.Soft.SoftDebuggerAdaptor.CreateValue (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object type, System.Object[] args) [0x000e0] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs:453 
  at Mono.Debugging.Evaluation.ObjectValueAdaptor.GetProxyObject (Mono.Debugging.Evaluation.EvaluationContext ctx, System.Object obj) [0x0017d] in /Users/builder/data/lanes/monodevelop-lion-monodevelop-5.6-branch/19bc3b64/source/monodevelop/main/external/debugger-libs/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs:1152
Comment 14 Mikayla Hutchinson [MSFT] 2014-11-09 17:15:43 UTC
Well, there's definitely a bad format string: https://github.com/mono/debugger-libs/blob/master/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs#L463

Given that it's a "constructor not found" exception, the linker is the most likely cause IMO.
Comment 15 Jeffrey Stedfast 2014-11-10 11:48:33 UTC
I've fixed the formatter issue in git master (which will become 5.7 afaik), but like Michael pointed out, the reason for the failure to find the .ctor in the first place is probably due to your Linker settings for iOS (which strips out code that you don't use in order to shrink the size of the app bundle).

I would suggest going into your "iOS Build" settings in your Project Options and disabling the linker (i.e. set it to "Don't Link").
Comment 16 Eric Weinschenk 2014-11-10 12:55:06 UTC
Ding ding ding!

Indeed, we had that set to "Link SDKs Only"

That said, we use that flag, and I can't turn it off. I'll wait for this fix to make it in the beta channel.

Thanks guys.
Comment 17 Eric Weinschenk 2014-11-10 13:02:33 UTC
oh, but I did test that turning the flag to Dont Link did in fact let me browse the dictionary, so yeah, that's it.
Comment 18 Mikayla Hutchinson [MSFT] 2014-11-10 13:58:35 UTC
Reassigning to iOS, the linker should not be removing debugger proxies for debug builds.
Comment 19 Sebastien Pouliot 2014-11-11 22:10:23 UTC
The type itself is not removed in debug builds since the attribute refers to it, e.g. CollectionDebuggerView is still there.

	[DebuggerDisplay ("Count={Count}"), DebuggerTypeProxy (typeof(CollectionDebuggerView<, >)), ComVisible (false)]
	public class Dictionary<TKey, TValue> ...

However the content inside the type, like it's .ctor, is removed because there's no reference, from the app, to that code. I'll look into preserving those parts automagically.
Comment 20 Sebastien Pouliot 2014-11-27 10:28:46 UTC
Fixed in master / c28d67637508f3eca28d6d29277cf646a646ab1d

The workaround is to disable the linker for debug (not release) builds.