msos.CommandExecutionContext.CreateTemporaryDbgEngTarget C# (CSharp) Method

CreateTemporaryDbgEngTarget() public method

Creates a temporary DbgEng DataTarget. It is used for a single command's execution, such as !lm or !mk, and disposed immediately thereafter. If there is already a persistent DbgEng DataTarget, i.e. the debugger is currently in native DbgEng "mode", this method fails.
public CreateTemporaryDbgEngTarget ( ) : Microsoft.Diagnostics.Runtime.DataTarget
return Microsoft.Diagnostics.Runtime.DataTarget
        public DataTarget CreateTemporaryDbgEngTarget()
        {
            if (_dbgEngDataTarget != null)
                throw new InvalidOperationException("There is already a persistent DbgEng DataTarget. Creating a temporary one is not allowed.");

            return CreateDbgEngDataTargetImpl();
        }

Usage Example

示例#1
0
文件: MemStats.cs 项目: tiandian/msos
        private void VirtualMemoryStatistics()
        {
            var   sizeByType            = new Dictionary <MEM, ulong>();
            var   sizeByState           = new Dictionary <MEM, ulong>();
            ulong largestFreeRegionSize = 0;

            using (var target = _context.CreateTemporaryDbgEngTarget())
            {
                foreach (var region in target.EnumerateVMRegions())
                {
                    if (region.Type != 0)
                    {
                        if (!sizeByType.ContainsKey(region.Type))
                        {
                            sizeByType.Add(region.Type, 0);
                        }

                        sizeByType[region.Type] += region.RegionSize;
                    }

                    if (!sizeByState.ContainsKey(region.State))
                    {
                        sizeByState.Add(region.State, 0);
                    }

                    sizeByState[region.State] += region.RegionSize;

                    if (region.State == MEM.FREE)
                    {
                        largestFreeRegionSize = Math.Max(largestFreeRegionSize, region.RegionSize);
                    }
                }
            }

            _context.WriteLine("Virtual memory statistics:");
            _context.WriteLine();
            foreach (var kvp in sizeByType)
            {
                _context.WriteLine("{0,-10} {1,-16}", kvp.Key, kvp.Value.ToMemoryUnits());
            }
            _context.WriteLine();
            foreach (var kvp in sizeByState)
            {
                _context.WriteLine("{0,-10} {1,-16}", kvp.Key, kvp.Value.ToMemoryUnits());
            }
            _context.WriteLine();
            _context.WriteLine("Largest free region size: {0}", largestFreeRegionSize.ToMemoryUnits());
            _context.WriteLine();
        }
All Usage Examples Of msos.CommandExecutionContext::CreateTemporaryDbgEngTarget