Индекс списка выходит за пределы при использовании Fastmm в Delphi

У меня есть одно приложение, в котором мне нужно устранить утечки памяти с помощью FastMM. Я добавил FullDebugMode, LogMemoryLeakDetailToFile в условные определения. И при закрытии приложения в режиме отладки я получил индекс списка вне границ (0), и приложение завершает работу без записи каких-либо утечек памяти в файле. В то время стек также пуст. И в багрепорте об этом тоже не было ясно сказано. И мое приложение может иметь n-количество списков, которые создаются в разных формах по-разному. И я использую Delphi 6 и FastMM4. Компоненты TbitbtnClour, KbmMemtable, QuickReport и Indy — это сторонние компоненты, которые я использую здесь. Я совсем запутался, пожалуйста, помогите мне решить эту проблему.


person Work 2 Enjoy - Enjoy 2 Work    schedule 21.02.2014    source источник
comment
Невозможно поставить диагноз без подробностей   -  person David Heffernan    schedule 21.02.2014
comment
В противном случае мы можем прокомментировать код события Close and Destroy во всем приложении и сделать это? Или есть ли какой-нибудь возможный способ узнать об исключении, где оно происходит?   -  person Work 2 Enjoy - Enjoy 2 Work    schedule 21.02.2014
comment
Ну и что происходит в отладчике. Где ломается. Как выглядит стек вызовов. Вы уже научились пользоваться отладчиком? Вы правильно установили fastmm. Самая первая единица в вашем файле .dpr?   -  person David Heffernan    schedule 21.02.2014
comment
Ях. Я знаю, как отлаживать и как использовать FastMM. И за последнюю неделю очистка утечек памяти для другого приложения, и это происходит правильно. И на это время Stack(ctrl+alt+s) пуст. Когда я запускаю приложение в режиме отладки, там, где это ломается, дело не идет.   -  person Work 2 Enjoy - Enjoy 2 Work    schedule 21.02.2014
comment
Но вы не знаете, какая строка кода выдает ошибку?   -  person David Heffernan    schedule 21.02.2014
comment
Я скажу еще одну вещь. ЕСЛИ я не добавляю FullDebugMode, LogMemoryLeakDetailToFile в условных определениях, тогда исключение List Out Ofbounds не появляется. И если я добавлю это, то я получаю исключение, и оно не показывает, откуда оно исходит   -  person Work 2 Enjoy - Enjoy 2 Work    schedule 21.02.2014
comment
И я также пытался использовать TapplicationEvent для обработки исключения. В этом тоже нет обработки.   -  person Work 2 Enjoy - Enjoy 2 Work    schedule 21.02.2014
comment
Трудно поверить, что ошибка не может быть перехвачена отладчиком. У вас включена отладка? Даже в фастмм?   -  person David Heffernan    schedule 21.02.2014
comment
Ях. Отладчик включен, и FastMM также включен. Есть ли способ решить эту проблему.?   -  person Work 2 Enjoy - Enjoy 2 Work    schedule 21.02.2014
comment
Конечно, есть способ решить проблему. Но сначала нужно понять проблему. Вам нужно его изолировать. Найдите некоторую информацию. Соберите факты. Вы до сих пор не показали код, который терпит неудачу. Определите и покажите код, вызывающий исключение. Посмотрите на стек вызовов. Вам нужно будет использовать некоторую отладку. Либо отладчик в IDE, либо что-то вроде madExcept. Это единственный совет, который можно дать, пока вы не предоставите действенные факты.   -  person David Heffernan    schedule 21.02.2014
comment
Раньше я встречал исключения, когда отладчик показывал только пустой или ненужный стек вызовов. Я пользуюсь EurekaLog - иногда помогают его отчеты. Часто это может быть исключение в потоке — поместите блоки перехвата исключений вокруг всего, что находится в вашем методе Execute(). Кроме того, если вы исправляли утечки памяти, может быть, у вас есть указатель/ссылка на когда-то утечку памяти, которая теперь не указывает ни на что действительное? Наконец, см. это вопрос об отладке без полезного стека вызовов.   -  person David    schedule 21.02.2014
comment
Спасибо. EurakaLog работает нормально и создает файл утечки памяти без каких-либо исключений,   -  person Work 2 Enjoy - Enjoy 2 Work    schedule 25.02.2014