То, что вы ищете, невозможно в управляемом коде. В C ++ это называется точкой останова данных. Это позволяет вам ломаться всякий раз, когда блок памяти изменяется работающей программой. Но это доступно только в чистом родном коде C ++.
Короткая версия того, почему это не реализовано, состоит в том, что в управляемом коде намного сложнее. Родной код приятен и предсказуем. Вы создаете память, и она не перемещается, пока вы не создадите новый объект (или явно не скопируете память).
Управляемый код намного сложнее, потому что это язык для сборки мусора. CLR обычно перемещает объекты в памяти. Поэтому просто смотреть немного памяти недостаточно. Требуется взаимодействие с GC.
Это только одна из проблем с реализацией управляемых точек останова.