|
В каком месте лучше перехватить название интерфейсного обьекта
|
|||
---|---|---|---|
#18+
Всем доброго дня, есть интерфейсный класс: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
при его уничтожении в BeforeDestruction.inherited в System в процедуре Код: pascal 1. 2. 3. 4. 5.
попадаю на Error т.к. RefCount = 1 как проще выяснить на какой обьект счётчик ещё не сброшен если поставить breakpoint в этой процедуре? пытаюсь понять какой интерфейсный обьект остался не уничтожен. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 15:30 |
|
В каком месте лучше перехватить название интерфейсного обьекта
|
|||
---|---|---|---|
#18+
hlopotun, бряк на увеличении RefCount не поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 15:55 |
|
В каком месте лучше перехватить название интерфейсного обьекта
|
|||
---|---|---|---|
#18+
wadman hlopotun, бряк на увеличении RefCount не поможет? попробую. Почемуто бряк перечёркивает когда прога стартует. Там вроде есть в среде где то настройка для компиляции и отладки системных либ и классов (дабы отладочную инфу для них включало). Сейчас поишу. Бряк ставлю тут: Код: pascal 1. 2. 3. 4.
может по стеку удастся понять кто создаётся. Хотя тут заколебёшся считать. Тут обьектов куча.... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 16:11 |
|
В каком месте лучше перехватить название интерфейсного обьекта
|
|||
---|---|---|---|
#18+
hlopotunкак проще выяснить на какой обьект счётчик ещё не сброшен если поставить breakpoint в этой процедуре? self->ClassName. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 16:15 |
|
В каком месте лучше перехватить название интерфейсного обьекта
|
|||
---|---|---|---|
#18+
hlopotun Бряк ставлю тут: Это не тот метод. Смотри TInterfacedObject._AddRef/._Release; ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 16:23 |
|
В каком месте лучше перехватить название интерфейсного обьекта
|
|||
---|---|---|---|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Поставить бряк на оба метода, в свойствах обоих бряков поставить Break = False, Log Call Stack = True. (Опционально можно ещё Log Message). Запустить программу и из окна View / Debug Windows / Events скопировать вывод в текстовый редактор. Пройтись по нему и удалить "парные" вызовы. Что останется - это и есть тот самый искомый вызов. Предварительно хорошо бы щёлкнуть правой по окну Events, выбрать Properties и там снять галки со всего, кроме Breakpoint messages. Перезапустить программу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2021, 16:30 |
|
|
start [/forum/topic.php?fid=58&msg=40107778&tid=2036922]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 405ms |
0 / 0 |