msos.UnifiedStackTraces.GetStackTrace C# (CSharp) Method

GetStackTrace() public method

public GetStackTrace ( uint threadIndex ) : List
threadIndex uint
return List
        public List<UnifiedStackFrame> GetStackTrace(uint threadIndex)
        {
            return GetStackTraceFromContext(threadIndex, null);
        }

Usage Example

Example #1
0
        public virtual List <UnifiedBlockingObject> GetUnmanagedBlockingObjects(uint osThreadId)
        {
            var result = new List <UnifiedBlockingObject>();

            if (_unifiedStackTraces != null && _stackWalker != null)
            {
                var threadInfo = _unifiedStackTraces.Threads.SingleOrDefault(ti => ti.OSThreadId == osThreadId);
                if (threadInfo != null)
                {
                    var stack = _unifiedStackTraces.GetStackTrace(threadInfo.EngineThreadId);
                    foreach (var frame in stack)
                    {
                        _stackWalker.SetFrameParameters(frame);

                        UnifiedBlockingObject blockingObject;
                        if (_stackWalker.GetCriticalSectionBlockingObject(frame, out blockingObject))
                        {
                            result.Add(blockingObject);
                        }
                        else if (_stackWalker.GetThreadSleepBlockingObject(frame, out blockingObject))
                        {
                            result.Add(blockingObject);
                        }

                        result.AddRange(frame.Handles.Select(GetUnifiedBlockingObjectForHandle));
                    }
                }
            }
            return(result);
        }
All Usage Examples Of msos.UnifiedStackTraces::GetStackTrace