Страница 1 из 1

Мониторинг динамической памяти.

Добавлено: 08 мар 2008, 10:25
AI_
Добрый день.
Подскажите пожалуйста как можно средствами Борланда отследить изменения в динамической памяти?
В двух словах имею сложный класс работы с памятью, но по непонятным причинам в какой то моемент по определенному адресу данные изменяются, когда изменяться не должны. Нужно отловить этот баг. Но как узнать момент изменения?
Мне нужно средство подобное Watchs, но позволяющее в любом месте программы видеть значение данных по известному адрессу. Другим путем найти баг не представляеться возможным.
Если таких средств в борланде нет, то подскажите где взять другое, как использовать (если сходу там не разобраться), ну вообщем посодействуйте скореейшему решению моей проблемы. Времени очень мало.

Большое спасибо.

Re: Мониторинг динамической памяти.

Добавлено: 11 мар 2008, 09:27
WinMain
Ну во-первых, не стоит надеяться на какие-то суперсредства для диагностики программы. Лучше для начала более грамотно организовать собственный код таким образом, чтобы доступ к выделенной памяти мог бы легко контролироваться, независимо от того, из какого места программы он осуществляется. Это можно сделать так:
Переменная-указатель или статический массив должны быть закрытым членом класса, а все обращения к данным производить только через специальные методы, типа Get(), Set() или Read(), Write(). Тогда ты можешь стать отладчиком в метод Set() или Write() и видеть каждое изменение данных.
Во вторых: я не верю, что твой класс уж настолько сложный, чтобы штатными средствами нельзя было с ним справиться. Есть конечно более мощные отладчики, типа SoftIce от компании NUMega, но его использование вряд ли облегчит тебе работу, скорее только усложнит.

Re: Мониторинг динамической памяти.

Добавлено: 11 мар 2008, 10:15
BBB
WinMain писал(а):Переменная-указатель или статический массив должны быть закрытым членом класса, а все обращения к данным производить только через специальные методы, типа Get(), Set() или Read(), Write(). Тогда ты можешь стать отладчиком в метод Set() или Write() и видеть каждое изменение данных.
Есть еще вариант, что изменение произошло "несанкционированно", т.е. просто какой-то оператор (например, копирования) промахнулся мимо памяти и попортил содержимое по "нашему" адресу.

Re: Мониторинг динамической памяти.

Добавлено: 11 мар 2008, 19:08
AI_
Я уже решил вопрос. Завел глобальную переменную указатель. Думаю это и имел в виду ВинМэйн. Я уже не помню в чем у меня там была лажа, но после истории с АнсиСтринг я был под большим сомнением, что все баги впрограмме появляются по вине програмиста. (Кстати, мое последнее сообщение в том топике было ошибочным. Глюк был в ЭнсиСтринге а не во мне. ПО крайней мере сейчас я так считаю)
Вот мне и начало мерещиться, что Борланд сам вытворяет что хочет с областью памяти.

Re: Мониторинг динамической памяти.

Добавлено: 06 авг 2010, 18:36
manitor
Мониторинг памяти Вот здесь есть хорошая программа для этого.