Как я могу видеть объекты внутри Heap & Stack в C#.Net

можно ли увидеть содержимое стека и кучи после каждой строки выполнения. Я хочу видеть это, поскольку это даст четкое представление о распределении памяти и освобождении .Сеть. С вашим

Если какой-либо документ или ссылка, которая очистит мои сомнения с вашим ответом, пожалуйста, поделитесь.

2 ответов


SOS или PssCor хорошее место, чтобы начать, вдоль стороны WinDbg.

как только вы это выяснили; прикрепите WinDbg к вашему процессу, загрузите расширение отладчика. Например:

.load C:\pathtoextensions\psscor4.dll

после этого, вы можете оформить !dumpheap или !dumpstack команды.

выходные данные обеих этих команд очень сырые. !dumpheap -stat даст вам "статистический" обзор кучи. Тип, выделенное число, и байты в сумме для всех распределений.

это не очень простая задача. Это займет некоторое время, чтобы получить достаточно практики с WinDbg, если вы не использовали его раньше.

что вы можете сделать, это установить точку останова на методе с использованием !bpmd, и использовать команды, упомянутые выше, а затем перейти с помощью p command и повторите выполнение команд.

Я уверен, что есть и другие коммерческие инструменты, такие как профилировщик муравьев или dotTrace это может сделать работу , но у меня нет большого опыта работы с любым инструментом.

как только вы начали, вы можете задать (новые) более конкретные вопросы о SOS или Psscor.


стопка:

var stackInfo = new StackTrace();

кучу? Нет, вам нужно использовать профилировщик, отладчик или соответствующие API. Не простая задача. Если вы попробуете и у вас возникнут трудности, лучше задать более конкретный вопрос.