Как я могу видеть объекты внутри 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. Не простая задача. Если вы попробуете и у вас возникнут трудности, лучше задать более конкретный вопрос.