From 8cdd75401304c0c5664582e0cde677ce0b34c119 Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz Date: Tue, 20 Sep 2022 10:36:22 +0200 Subject: [PATCH 1/2] TMP --- out.txt | Bin 0 -> 679122 bytes src/mono/mono/component/debugger-agent.c | 28 ++++++++--- src/mono/mono/component/mini-wasm-debugger.c | 12 ++++- .../MemberReferenceResolver.cs | 47 +++++++++++++----- .../BrowserDebugProxy/MonoSDBHelper.cs | 2 +- .../EvaluateOnCallFrameTests.cs | 44 +++++++++++++--- .../debugger-test/debugger-evaluate-test.cs | 5 ++ 7 files changed, 111 insertions(+), 27 deletions(-) create mode 100644 out.txt diff --git a/out.txt b/out.txt new file mode 100644 index 0000000000000000000000000000000000000000..2497b028a63a3a6178c03287fbb6e10c717f356e GIT binary patch literal 679122 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 PXQt*G9NPeM%yIvJoZGYz literal 0 HcmV?d00001 diff --git a/src/mono/mono/component/debugger-agent.c b/src/mono/mono/component/debugger-agent.c index edbbada76af763..8ea3425c845e77 100644 --- a/src/mono/mono/component/debugger-agent.c +++ b/src/mono/mono/component/debugger-agent.c @@ -5336,7 +5336,7 @@ decode_vtype (MonoType *t, MonoDomain *domain, gpointer void_addr, gpointer void if (t && klass != mono_class_from_mono_type_internal (t)) { char *name = mono_type_full_name (t); char *name2 = mono_type_full_name (m_class_get_byval_arg (klass)); - PRINT_DEBUG_MSG (1, "[%p] Expected value of type %s, got %s.\n", (gpointer) (gsize) mono_native_thread_id_get (), name, name2); + PRINT_DEBUG_MSG (1, "[%p] 1 Expected value of type %s, got %s.\n", (gpointer) (gsize) mono_native_thread_id_get (), name, name2); g_free (name); g_free (name2); return ERR_INVALID_ARGUMENT; @@ -5416,6 +5416,7 @@ static ErrorCode decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8 **endbuf, guint8 *limit, gboolean check_field_datatype) { ErrorCode err; + PRINT_DEBUG_MSG (1, "[ILONA] decode_value_internal t->type = %d, type = %d\n", t->type, type); if (type != t->type && !MONO_TYPE_IS_REFERENCE (t) && !(t->type == MONO_TYPE_I && type == MONO_TYPE_VALUETYPE) && @@ -5426,7 +5427,7 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr, !(t->type == MONO_TYPE_GENERICINST && type == MONO_TYPE_VALUETYPE) && !(t->type == MONO_TYPE_VALUETYPE && type == MONO_TYPE_OBJECT)) { char *name = mono_type_full_name (t); - PRINT_DEBUG_MSG (1, "[%p] Expected value of type %s, got 0x%0x.\n", (gpointer) (gsize) mono_native_thread_id_get (), name, type); + PRINT_DEBUG_MSG (1, "[%p] 2 Expected value of type %s, got 0x%0x.\n", (gpointer) (gsize) mono_native_thread_id_get (), name, type); g_free (name); return ERR_INVALID_ARGUMENT; } @@ -5581,7 +5582,7 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr, g_free (vtype_buf); } else { char *name = mono_type_full_name (t); - PRINT_DEBUG_MSG (1, "[%p] Expected value of type %s, got 0x%0x.\n", (gpointer) (gsize) mono_native_thread_id_get (), name, type); + PRINT_DEBUG_MSG (1, "[%p] 3 Expected value of type %s, got 0x%0x. %s, %s\n", (gpointer) (gsize) mono_native_thread_id_get (), name, type, name, type); g_free (name); return ERR_INVALID_ARGUMENT; } @@ -5612,8 +5613,10 @@ decode_value (MonoType *t, MonoDomain *domain, gpointer void_addr, gpointer void ERROR_DECL (error); ErrorCode err; int type = decode_byte (buf, &buf, limit); + PRINT_DEBUG_MSG (1, "[ILONA] decode_value type = %d, t->type = %d\n", type, t->type); if (t->type == MONO_TYPE_GENERICINST && mono_class_is_nullable (mono_class_from_mono_type_internal (t))) { + PRINT_DEBUG_MSG (1, "[ILONA] decode_value type in if 1"); MonoType *targ = t->data.generic_class->context.class_inst->type_argv [0]; guint8 *nullable_buf; @@ -5623,11 +5626,13 @@ decode_value (MonoType *t, MonoDomain *domain, gpointer void_addr, gpointer void err = decode_value_internal (t, type, domain, addr, buf, endbuf, limit, check_field_datatype); if (err == ERR_NONE) return err; + PRINT_DEBUG_MSG (1, "[ILONA] decode_value type in if 2"); /* * Then try decoding as a primitive value or null. */ if (targ->type == type) { + PRINT_DEBUG_MSG (1, "[ILONA] decode_value type in if 3"); nullable_buf = (guint8 *)g_malloc (mono_class_instance_size (mono_class_from_mono_type_internal (targ))); err = decode_value_internal (targ, type, domain, nullable_buf, buf, endbuf, limit, check_field_datatype); if (err != ERR_NONE) { @@ -6037,14 +6042,14 @@ mono_do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, gu * Invoke this method directly, currently only Environment.Exit () is supported. */ this_arg = NULL; - PRINT_DEBUG_MSG (1, "[%p] Invoking method '%s' on receiver '%s'.\n", (gpointer) (gsize) mono_native_thread_id_get (), mono_method_full_name (invoke->method, TRUE), this_arg ? m_class_get_name (this_arg->vtable->klass) : ""); + PRINT_DEBUG_MSG (1, "[%p] 1 Invoking method '%s' on receiver '%s'.\n", (gpointer) (gsize) mono_native_thread_id_get (), mono_method_full_name (invoke->method, TRUE), this_arg ? m_class_get_name (this_arg->vtable->klass) : ""); mono_runtime_try_invoke (invoke->method, NULL, invoke->args, &exc, error); mono_error_assert_ok (error); g_assert_not_reached (); } - m = decode_methodid (p, &p, end, &domain, &err); + m = decode_methodid (p, &p, end, &domain, &err); // exception after it if (err != ERR_NONE) return err; sig = mono_method_signature_internal (m); @@ -6116,7 +6121,7 @@ mono_do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, gu } } - PRINT_DEBUG_MSG (1, "[%p] Invoking method '%s' on receiver '%s'.\n", (gpointer) (gsize) mono_native_thread_id_get (), mono_method_full_name (m, TRUE), this_arg ? m_class_get_name (this_arg->vtable->klass) : ""); + PRINT_DEBUG_MSG (1, "[%p] 2 Invoking method '%s' on receiver '%s'.\n", (gpointer) (gsize) mono_native_thread_id_get (), mono_method_full_name (m, TRUE), this_arg ? m_class_get_name (this_arg->vtable->klass) : ""); if (this_arg && this_arg->vtable->domain != domain) NOT_IMPLEMENTED; @@ -6141,6 +6146,7 @@ mono_do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, gu return ERR_INVALID_ARGUMENT; nargs = decode_int (p, &p, end); + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 1, nargs = %d, paramCnt = %d\n", nargs, sig->param_count); if (nargs != sig->param_count) return ERR_INVALID_ARGUMENT; /* Use alloca to get gc tracking */ @@ -6148,32 +6154,42 @@ mono_do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, gu memset (arg_buf, 0, nargs * sizeof (gpointer)); args = (gpointer *)g_alloca (nargs * sizeof (gpointer)); for (i = 0; i < nargs; ++i) { + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method in the loop i = %d\n", i); if (MONO_TYPE_IS_REFERENCE (sig->params [i])) { + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 2\n"); err = decode_value (sig->params [i], domain, (guint8*)&args [i], p, &p, end, TRUE); + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 3, err = %d\n", err); if (err != ERR_NONE) break; if (args [i] && ((MonoObject*)args [i])->vtable->domain != domain) NOT_IMPLEMENTED; + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 4\n"); if (m_type_is_byref (sig->params [i])) { + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 5\n"); arg_buf [i] = g_newa (guint8, sizeof (gpointer)); *(gpointer*)arg_buf [i] = args [i]; args [i] = arg_buf [i]; } } else { + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 6\n"); MonoClass *arg_class = mono_class_from_mono_type_internal (sig->params [i]); arg_buf [i] = (guint8 *)g_alloca (mono_class_instance_size (arg_class)); err = decode_value (sig->params [i], domain, arg_buf [i], p, &p, end, TRUE); + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 7, err = %d\n", err); if (err != ERR_NONE) break; if (mono_class_is_nullable (arg_class)) { + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 8\n"); args [i] = mono_nullable_box (arg_buf [i], arg_class, error); mono_error_assert_ok (error); } else { + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 9\n"); args [i] = arg_buf [i]; } } } + PRINT_DEBUG_MSG (1, "[ILONA] mono_do_invoke_method 10, i = %d\n", i); if (i < nargs) return err; diff --git a/src/mono/mono/component/mini-wasm-debugger.c b/src/mono/mono/component/mini-wasm-debugger.c index 98da53aa693b40..111dc710d524f4 100644 --- a/src/mono/mono/component/mini-wasm-debugger.c +++ b/src/mono/mono/component/mini-wasm-debugger.c @@ -136,7 +136,7 @@ handle_multiple_ss_requests (void) { static void mono_wasm_enable_debugging_internal (int debug_level) { - log_level = debug_level; + log_level = 10; if (debug_level != 0) { wasm_debugger_log(1, "DEBUGGING ENABLED\n"); debugger_enabled = TRUE; @@ -373,6 +373,7 @@ extern void mono_wasm_add_dbg_command_received(mono_bool res_ok, int id, void* b EMSCRIPTEN_KEEPALIVE gboolean mono_wasm_send_dbg_command_with_parms (int id, MdbgProtCommandSet command_set, int command, guint8* data, unsigned int size, int valtype, char* newvalue) { + PRINT_DEBUG_MSG (1, "[ILONA] mono_wasm_send_dbg_command_with_parms 1\n"); gboolean result = FALSE; MONO_ENTER_GC_UNSAFE; if (!debugger_enabled) { @@ -389,7 +390,9 @@ mono_wasm_send_dbg_command_with_parms (int id, MdbgProtCommandSet command_set, i result = TRUE; goto done; } + PRINT_DEBUG_MSG (1, "[ILONA] mono_wasm_send_dbg_command_with_parms 2\n"); mono_wasm_send_dbg_command(id, command_set, command, bufWithParms.buf, m_dbgprot_buffer_len(&bufWithParms)); + PRINT_DEBUG_MSG (1, "[ILONA] mono_wasm_send_dbg_command_with_parms 3\n"); buffer_free (&bufWithParms); result = TRUE; done: @@ -400,6 +403,7 @@ mono_wasm_send_dbg_command_with_parms (int id, MdbgProtCommandSet command_set, i EMSCRIPTEN_KEEPALIVE gboolean mono_wasm_send_dbg_command (int id, MdbgProtCommandSet command_set, int command, guint8* data, unsigned int size) { + PRINT_DEBUG_MSG (1, "[ILONA] mono_wasm_send_dbg_command 1\n"); gboolean result = FALSE; MONO_ENTER_GC_UNSAFE; if (!debugger_enabled) { @@ -408,6 +412,7 @@ mono_wasm_send_dbg_command (int id, MdbgProtCommandSet command_set, int command, result = TRUE; goto done; } + PRINT_DEBUG_MSG (1, "[ILONA] mono_wasm_send_dbg_command 2\n"); ss_calculate_framecount (NULL, NULL, TRUE, NULL, NULL); MdbgProtBuffer buf; buffer_init (&buf, 128); @@ -415,11 +420,14 @@ mono_wasm_send_dbg_command (int id, MdbgProtCommandSet command_set, int command, MdbgProtErrorCode error = 0; if (command_set == MDBGPROT_CMD_SET_VM && command == MDBGPROT_CMD_VM_INVOKE_METHOD ) { + PRINT_DEBUG_MSG (1, "[ILONA] mono_wasm_send_dbg_command 3; command == MDBGPROT_CMD_VM_INVOKE_METHOD\n"); DebuggerTlsData* tls = mono_wasm_get_tls (); InvokeData invoke_data; memset (&invoke_data, 0, sizeof (InvokeData)); invoke_data.endp = data + size; + PRINT_DEBUG_MSG (1, "[ILONA] mono_wasm_send_dbg_command 4\n"); error = mono_do_invoke_method (tls, &buf, &invoke_data, data, &data); + PRINT_DEBUG_MSG (1, "[ILONA] mono_wasm_send_dbg_command 5, error=%d\n", error); } else if (command_set == MDBGPROT_CMD_SET_VM && (command == MDBGPROT_CMD_GET_ASSEMBLY_BYTES)) { @@ -488,4 +496,4 @@ mini_wasm_debugger_add_function_pointers (MonoComponentDebugger* fn_table) fn_table->mono_wasm_single_step_hit = mono_wasm_single_step_hit; } -#endif \ No newline at end of file +#endif diff --git a/src/mono/wasm/debugger/BrowserDebugProxy/MemberReferenceResolver.cs b/src/mono/wasm/debugger/BrowserDebugProxy/MemberReferenceResolver.cs index 92afb5b2d28fba..34eb2108be0f92 100644 --- a/src/mono/wasm/debugger/BrowserDebugProxy/MemberReferenceResolver.cs +++ b/src/mono/wasm/debugger/BrowserDebugProxy/MemberReferenceResolver.cs @@ -458,19 +458,27 @@ public async Task Resolve(ElementAccessExpressionSyntax elementAccess, return await ExpressionEvaluator.EvaluateSimpleExpression(this, eaFormatted, elementAccessStr, variableDefinitions, logger, token); } var typeIds = await context.SdbAgent.GetTypeIdsForObject(objectId.Value, true, token); - int[] methodIds = await context.SdbAgent.GetMethodIdsByName(typeIds[0], "ToArray", token); - // ToArray should not have an overload, but if user defined it, take the default one: without params - if (methodIds == null) - throw new InvalidOperationException($"Type '{rootObject?["className"]?.Value()}' cannot be indexed."); - + // int[] methodIds = await context.SdbAgent.GetMethodIdsByName(typeIds[0], "ToArray", token); + // int allowedParamCnt = 0; + // if (methodIds == null) + // { + int allowedParamCnt = 1; + int[] methodIds = await context.SdbAgent.GetMethodIdsByName(typeIds[0], "get_Item", token); + if (methodIds == null) + throw new InvalidOperationException($"Type '{rootObject?["className"]?.Value()}' cannot be indexed."); + // } + + // ToArray / get_Item should not have an overload, but if user defined it, take the default one: without params / with one param: key int toArrayId = methodIds[0]; if (methodIds.Length > 1) { + Console.WriteLine($"methodIds.Length > 1"); foreach (var methodId in methodIds) { MethodInfoWithDebugInformation methodInfo = await context.SdbAgent.GetMethodInfo(methodId, token); ParameterInfo[] paramInfo = methodInfo.GetParametersInfo(); - if (paramInfo.Length == 0) + Console.WriteLine($"name = {methodInfo.Name}; paramInfo = {paramInfo.Length}"); + if (paramInfo.Length == allowedParamCnt) { toArrayId = methodId; break; @@ -479,14 +487,29 @@ public async Task Resolve(ElementAccessExpressionSyntax elementAccess, } try { - var toArrayRetMethod = await context.SdbAgent.InvokeMethod(objectId.Value, toArrayId, isValueType: false, token); - rootObject = await GetValueFromObject(toArrayRetMethod, token); - DotnetObjectId.TryParse(rootObject?["objectId"]?.Value(), out DotnetObjectId arrayObjectId); - rootObject["value"] = await context.SdbAgent.GetArrayValues(arrayObjectId.Value, token); - return (JObject)rootObject["value"][elementIdx]["value"]; + Console.WriteLine($"methodIds.Length == 1"); + Console.WriteLine($"rootObject = {rootObject}, elementIdxStr = {elementIdxStr}"); + if (allowedParamCnt == 0) // ToArray result + { + JObject toArrayRetObj = await context.SdbAgent.InvokeMethod(objectId.Value, toArrayId, isValueType: false, token); + rootObject = await GetValueFromObject(toArrayRetObj, token); + DotnetObjectId.TryParse(rootObject?["objectId"]?.Value(), out DotnetObjectId arrayObjectId); + rootObject["value"] = await context.SdbAgent.GetArrayValues(arrayObjectId.Value, token); + return (JObject)rootObject["value"][elementIdx]["value"]; + } + // get_Item result + using var ctorArgsWriter = new MonoBinaryWriter(); + ctorArgsWriter.WriteObj(objectId, context.SdbAgent); + ctorArgsWriter.Write(1); // number of method args + // if we learn how to check properly the indexing obj type and pass elementIdx / elementIdxStr when we should, then ToArray won't be needed + if (!await ctorArgsWriter.WriteConst(ElementType.I4, elementIdx, context.SdbAgent, token)) // string? how do you know? + throw new InternalErrorException($"Unable to write index parameter to invoke the method in the runtime."); + JObject getItemRetObj = await context.SdbAgent.InvokeMethod(ctorArgsWriter.GetParameterBuffer(), toArrayId, token); + return (JObject)getItemRetObj["value"]; } - catch + catch (Exception ex) { + Console.WriteLine($"ex = {ex}"); throw new InvalidOperationException($"Cannot apply indexing with [] to an object of type '{rootObject?["className"]?.Value()}'"); } default: diff --git a/src/mono/wasm/debugger/BrowserDebugProxy/MonoSDBHelper.cs b/src/mono/wasm/debugger/BrowserDebugProxy/MonoSDBHelper.cs index cbe0692125b352..993dd43821728f 100644 --- a/src/mono/wasm/debugger/BrowserDebugProxy/MonoSDBHelper.cs +++ b/src/mono/wasm/debugger/BrowserDebugProxy/MonoSDBHelper.cs @@ -778,7 +778,7 @@ internal sealed class MonoSDBHelper private int VmMinorVersion { get; set; } private int VmMajorVersion { get; set; } - private Dictionary methods; + public Dictionary methods; private Dictionary assemblies; private Dictionary types; diff --git a/src/mono/wasm/debugger/DebuggerTestSuite/EvaluateOnCallFrameTests.cs b/src/mono/wasm/debugger/DebuggerTestSuite/EvaluateOnCallFrameTests.cs index 30d391700c9afa..508e847fd5e846 100644 --- a/src/mono/wasm/debugger/DebuggerTestSuite/EvaluateOnCallFrameTests.cs +++ b/src/mono/wasm/debugger/DebuggerTestSuite/EvaluateOnCallFrameTests.cs @@ -627,19 +627,51 @@ await EvaluateOnCallFrameAndCheck(id, }); + [Fact] //FIXME: Type 'DebuggerTests.EvaluateLocalsWithIndexingTests.TestEvaluate' cannot be indexed. + public async Task EvaluateIndexingOfObjectsThatDoNotHaveToArrayMethod() => await CheckInspectLocalsAtBreakpointSite( + "DebuggerTests.EvaluateLocalsWithIndexingTests", "EvaluateLocals", 5, "DebuggerTests.EvaluateLocalsWithIndexingTests.EvaluateLocals", + "window.setTimeout(function() { invoke_static_method ('[debugger-test] DebuggerTests.EvaluateLocalsWithIndexingTests:EvaluateLocals'); })", + wait_for_event_fn: async (pause_location) => + { + var id = pause_location["callFrames"][0]["callFrameId"].Value(); + await EvaluateOnCallFrameAndCheck(id, + ("f[\"longstring\"]", TBool(true)) + // ("f[\"-\"]", TBool(false)) + // ("f.arrIndexedByStr[\"longstring\"]", TBool(true)), + // ("f.arrIndexedByStr[\"-\"]", TBool(false)) + ); + }); + + [Fact] + public async Task EvaluateIndexingByNonNumberType() => await CheckInspectLocalsAtBreakpointSite( + "DebuggerTests.EvaluateLocalsWithIndexingTests", "EvaluateLocals", 5, "DebuggerTests.EvaluateLocalsWithIndexingTests.EvaluateLocals", + "window.setTimeout(function() { invoke_static_method ('[debugger-test] DebuggerTests.EvaluateLocalsWithIndexingTests:EvaluateLocals'); })", + wait_for_event_fn: async (pause_location) => + { + var id = pause_location["callFrames"][0]["callFrameId"].Value(); + await EvaluateOnCallFrameAndCheck(id, + ("f.indexedByStr[\"11\"]", TBool(true)), + ("f.indexedByStr[\"111\"]", TBool(false)), + ("f.indexedByBool[true]", TString("TRUE")), + ("f.indexedByStr[false]", TString("FALSE")) + ); + }); + + [Fact] - public async Task EvaluateIndexingByExpression() => await CheckInspectLocalsAtBreakpointSite( + public async Task EvaluateIndexingByExpression2() => await CheckInspectLocalsAtBreakpointSite( "DebuggerTests.EvaluateLocalsWithIndexingTests", "EvaluateLocals", 5, "DebuggerTests.EvaluateLocalsWithIndexingTests.EvaluateLocals", "window.setTimeout(function() { invoke_static_method ('[debugger-test] DebuggerTests.EvaluateLocalsWithIndexingTests:EvaluateLocals'); })", wait_for_event_fn: async (pause_location) => { var id = pause_location["callFrames"][0]["callFrameId"].Value(); await EvaluateOnCallFrameAndCheck(id, - ("f.numList[i + 1]", TNumber(2)), - ("f.textList[(2 * j) - 1]", TString("2")), - ("f.textList[j - 1]", TString("1")), - //("f[\"longstring\"]", TBool(true)), FIXME: Broken case - ("f.numArray[f.numList[j - 1]]", TNumber(2)) + // ("f.numList[i + 1]", TNumber(2)), + // ("f.textList[(2 * j) - 1]", TString("2")), + // ("f.textList[j - 1]", TString("1")), + ("f.indexedByStr[\"1\" + \"1\"]", TBool(true)), + ("f.indexedByStr[\'1\' + \"11\"]", TBool(false)) + // ("f.numArray[f.numList[j - 1]]", TNumber(2)) ); }); diff --git a/src/mono/wasm/debugger/tests/debugger-test/debugger-evaluate-test.cs b/src/mono/wasm/debugger/tests/debugger-test/debugger-evaluate-test.cs index c38a64fdce0350..e6a6f6dc987b50 100644 --- a/src/mono/wasm/debugger/tests/debugger-test/debugger-evaluate-test.cs +++ b/src/mono/wasm/debugger/tests/debugger-test/debugger-evaluate-test.cs @@ -516,10 +516,13 @@ public class TestEvaluate public List> numListOfLists; public string[][] textArrayOfArrays; public List> textListOfLists; + public Dictionary indexedByStr; + public Dictionary indexedByBool; public int idx0; public int idx1; public bool this[string key] => key.Length > 3; + public string this[bool key] => key.ToString(); public void run() { @@ -531,6 +534,8 @@ public void run() numListOfLists = new List> { numList, numList }; textArrayOfArrays = new string[][] { textArray, textArray }; textListOfLists = new List> { textList, textList }; + indexedByStr = new Dictionary() { { "11", true }, { "111", false } }; + indexedByBool = new Dictionary() { { true, "TRUE" }, { false, "FALSE" } }; idx0 = 0; idx1 = 1; } From 91fdb96e86b261d5beb6e199a0f340f56bc44575 Mon Sep 17 00:00:00 2001 From: Ilona Tomkowicz <32700855+ilonatommy@users.noreply.github.com> Date: Tue, 28 Feb 2023 18:00:04 +0100 Subject: [PATCH 2/2] Update src/mono/mono/component/debugger-agent.c Co-authored-by: Thays Grazia --- src/mono/mono/component/debugger-agent.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mono/mono/component/debugger-agent.c b/src/mono/mono/component/debugger-agent.c index 8ea3425c845e77..e43eb657cf27eb 100644 --- a/src/mono/mono/component/debugger-agent.c +++ b/src/mono/mono/component/debugger-agent.c @@ -5335,7 +5335,8 @@ decode_vtype (MonoType *t, MonoDomain *domain, gpointer void_addr, gpointer void if (t && klass != mono_class_from_mono_type_internal (t)) { char *name = mono_type_full_name (t); - char *name2 = mono_type_full_name (m_class_get_byval_arg (klass)); + char *name3 = mono_type_full_name (m_class_get_byval_arg (klass)); + HA! my edition PRINT_DEBUG_MSG (1, "[%p] 1 Expected value of type %s, got %s.\n", (gpointer) (gsize) mono_native_thread_id_get (), name, name2); g_free (name); g_free (name2);