Перерыв, когда любой член класса (или объект) вызвал - PullRequest
0 голосов
/ 11 апреля 2019

Я сейчас отлаживаю свое приложение. (.Net Framework 4.6.2) У меня есть экземпляр класса, который каким-то образом изменяется при выполнении определенной функции (при отладке). Теперь я хотел бы понять, что получил доступ и изменил объект.

 void PerformCalculationWithObject(MyClass obj)
 {
      DoSomething(obj); // calls a lot of different operations
                        // which sometimes modify obj, and sometimes not.
 }

Но класс большой и сложный, и многие функции вызываются под функцией.

Я знаю, что моей самой большой проблемой является отсутствие хорошего объектного дизайна в этом устаревшем коде, что приводит к этой проблеме.

Таким образом, вопрос в том, существует ли возможность автоматического прерывания , когда вызывается некоторый член класса (может быть, даже просто для конкретного экземпляра) (без установки множества точек останова).

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Если вы используете VS 2019 и .NET Core 3.0, существуют точки прерывания данных, которые можно установить для объекта из окна просмотра.Просто щелкните правой кнопкой мыши по выражению в окне просмотра (в этом случае добавьте часы для obj) и выберите «Перерыв при изменении значения».

Более подробная информация об этом закончена на: https://devblogs.microsoft.com/visualstudio/break-when-value-changes-data-breakpoints-for-net-core-in-visual-studio-2019/

Я ценю, что это может не помочь вам, поскольку вы отлаживаете устаревшее приложение, но, возможно, либо оно может запустить .NET Core 3 во время отладки, либо другой пользователь найдет этот ответ полезным.

0 голосов
/ 11 апреля 2019

В таких случаях я обычно изменяю переменные членов класса, которые, как я подозреваю, меняют на свойства с помощью метода get и set, а затем помещает точку останова в метод set.

...