позволяет шаг за шагом идти результат да следующим
как вы можете сделать .foreach на это без фильтрации
.foreach будет проходить Имя:, System.Int32, MethodTable, 621ff680 ....
[0] ,,, [п], [фактический адрес] в сценарии и не удивительно windb г
пытается как ад на прочитать дерьмо от имени, System.Int32 строки и пытаются сбросить их в качестве объекта
я бы сказал, даже если у вас есть 60 гб это не было бы достаточно, если вы .foreach, как это займет некоторое время читать документы
0:004> !da 016e1da4
Name: System.Int32[]
MethodTable: 621ff680
EEClass: 61e3fd78
Size: 300(0x12c) bytes
Array: Rank 1, Number of elements 72, Type Int32
Element Methodtable: 621ff6bc
[0] 016e1dac
[1] 016e1db0
[2] 016e1db4
[3] 016e1db8
вы, вероятно, хотите сделать .foreach на 16e1dac, DB0, db4, db8 и т.д. ??
если так ваша первая линия должна быть имитируя этот ИЭ
вместо дд место l1 вы должны использовать ваш {? пои ($ {место})} независимо
также убедитесь, что каждый разыменования здесь на самом деле может быть разыменовываются
0:004> .foreach /pS 16 /ps 1 (place { !da 016e1da4 }) {dd place l1 }
016e1dac 00000003
016e1db0 00000007
016e1db4 0000000b
016e1db8 00000011
016e1dbc 00000017
016e1dc0 0000001d
016e1dc4 00000025
в этом примере я наклоняюсь разыменовать ничего> пои ($ {место}), потому что это Int массив
0:004> .foreach /pS 16 /ps 1 (place { !da -length 5 016e1da4 }) {? poi(${place}) }
Evaluate expression: 3 = 00000003
Evaluate expression: 7 = 00000007
Evaluate expression: 11 = 0000000b
Evaluate expression: 17 = 00000011
Evaluate expression: 23 = 00000017
вы не можете сделать произвольные вещи и ожидать, что вменяемые результаты
'.foreach ...! dumpobj', кажется, не имеет смысла. '! dumpobj' работает на одном объекте. Чего вы ожидаете? Насколько велика свалка? 6 ГБ примерно равны размеру дампа? В зависимости от доступа к памяти WinDbg может считывать эти части дампа в память, и он будет обрабатываться, как в любой другой программе. –
Размер дампа около 1G, каждый элемент массива - это ведро, которое имеет следующий макет, 'private struct bucket { \t public object key; \t общественный объект val; \t общественного ИНТ hash_coll;} \t ' И тип ключа, который является одним из области ковшом, является класс, который содержит строку field.So результата пои (пои ($ {} выполнения) + 0x8)} является адресом экземпляра строки для одного из полей ключа, поэтому результаты! Dumpobj poi (poi ($ {runtime}) + 0x8) содержат много полей, кроме самой строковой константы, поэтому я использовал. foreach (obj {! dumpobj poi (poi ($ {runtime}) + 0x8)}) для фильтрации. – Jason
BTW, я ссылаюсь на следующий URL-адрес, чтобы написать сценарий windbg [debuggingtoolbox] (https://blogs.msdn.microsoft.com/debuggingtoolbox/2010/08/13/windbg-script-displaying-parameters-for-microsoft- reportingservices-reportprocessing /) – Jason