Как установить точку останова на вызовы метода
В среде разработки, в режиме отладки проекта, есть возможность устанавливать точки останова на вызовы пользовательских методов, а также на вызовы системных методов и методов встроенных типов. Данная функциональность может быть полезна, если вы знаете имя функции, но не знаете, в каком модуле она расположена, либо когда вызываемая функция не имеет исходного кода (например, системная) и нет возможности поставить на нее точку останова обычным образом. В таком случае, вы можете задать точку останова с именем нужного метода. Когда данная функция будет вызвана, сработает остановка.
Механизм работает сл едующим образом: во время исполнения приложения проверяются все вхождения записанного в точке останова текста в полное имя метода. Полным именем метода считается ПространствоИмен::ИмяТипа.ИмяМетода(). Для системных методов и методов встроенных типов, имеющих двуязычный вариант названия, остановка будет срабатывать также на вызове методов, имя которых записано на втором языке.
Механизм так же учитывает иерархию типов. Если метод унаследован от некоторого типа Базовый, то в точке останова может указываться как Наследник.Метод(), так и Базовый.Метод().
Есть несколько способов остановки на вызове методов:
- остановка в пользовательском коде на вызове конкретного метода,
- остановка на месте вызова любого метода известного модуля либо подсистемы,
- остановка на вызове системного метода,
- остановка на изменении свойства компонента интерфейса.
Далее каждый способ будет рассмотрен подробнее.
Остановка в пользовательском коде на вызове конкретного метода
Чтобы остановить выполнение программы в момент, когда вызывается функция МояФункция, следует добавить точку останова с именем МояФункция. После запуска отладки программа будет остановлена на каждом вызове функции, имеющей в полном имени подстроку МояФункция.
Чтобы остановить выполнение программы в момент, когда вызывается функция МояФункция, содержащаяся в конкретном модуле (например, Товары.Объект) определенной подсистемы (например, Товары), следует добавить точку останова с именем Товары::Товары.Объект.МояФункция(). После запуска отладки программа будет остановлена на вызове только той функции МояФункция, что содержится в модуле Товары.Объект подсистемы Товары.
Остановка на месте вызова любого метода известного модуля либо подсистемы
Чтобы остановить исполнение программы на месте вызова любого метода, который содержится в известном модуле либо подсистеме, следует указать название соответствующего модуля либо подсистемы, например:
- ПодсистемаТовары::СправочникТовары.Объект
- СправочникТовары.Объект
- СправочникТовары
- ПодсистемаТовары
Остановка на вызове системного метода
Чтобы остановить исполнение программы на вызове системного метода, следует указать в точке останова название системного метода, например:
- Стд::Массив::Добавить— таким образом можно узнать, в каком месте осуществляется добавление нового элемента в- Массив
- КонтекстДоступа::Привилегированный— таким образом можно узнать, в каком месте устанавливается привилегированный контекст доступа.