Ejemplo n.º 1
0
        internal void AppendStackTraceForHandle(JniHandleInfo handle, string append)
        {
            if (!Handles.Contains(handle))
            {
                Handles.Add(handle);
            }

            StringBuilder stack;

            if (!stacks.TryGetValue(handle, out stack))
            {
                stacks.Add(handle, new StringBuilder(append));
                return;
            }
            if (stack.Length > 0)
            {
                stack.Append("\n");
            }
            stack.Append(append);

            if (append.Contains(".get_class_ref()"))
            {
                SetTypesFromStackTraceEntry(append, append.LastIndexOf(".get_class_ref()", StringComparison.Ordinal));
            }
            else if (append.EndsWith("..cctor()", StringComparison.Ordinal))
            {
                SetTypesFromStackTraceEntry(append, append.LastIndexOf("..cctor()", StringComparison.Ordinal));
            }
            else if (append.Contains("..ctor("))
            {
                SetTypesFromStackTraceEntry(append, append.LastIndexOf("..ctor(", StringComparison.Ordinal));
            }
        }
Ejemplo n.º 2
0
        public string GetStackTraceForHandle(JniHandleInfo handle)
        {
            StringBuilder stack;

            if (stacks.TryGetValue(handle, out stack))
            {
                return(stack.ToString());
            }
            return(null);
        }