Доброго времени суток, вам, господа!
Все выходные тут боролся я с одной программулиной и столкнулся с бедой!!!!
И вдруг как ни в чЁм не бывало наткнулся на просторах интернета на такую замечательную опцию запуска как MALLOC_CHECK_=0, которая не решила конечно проблемы, но перестала выдавать всю ту ужасающую специфическую информацию.
Немного о применении этой опции:
Все выходные тут боролся я с одной программулиной и столкнулся с бедой!!!!
Сама программка «всего навсего» производила манипуляции над матрицами.. Но не просто считала там себе цифирки, а распараллеливала это дело! Но суть не в том сам MPI работает на ура..
Моею задачей было сделать так, чтобы матрицы содержали значения типа double.
Естественно пока подгонял (отлаживал) все нюансы — использовал тип int.
…кстати в MPI есть свои типы данных, к примеру СИ'шный int будет обзываться MPI_INT, а double — как ни странно MPI_DOUBLE :)
И вот он момент по плану моего ToDo, когда пора было меня int на double, но что же??? что-то произошло… при запуске (компиляция проходит нормально) выдаЁт кучу служебной информации с заголовком Memory Map.
Я с самого начала этой проблемы догадывался, что трабл в динамическом выделении памяти под массивы и в соответствующем их освобождении..
И со всем этим я проковырялся больше суток :'(
Моею задачей было сделать так, чтобы матрицы содержали значения типа double.
Естественно пока подгонял (отлаживал) все нюансы — использовал тип int.
…кстати в MPI есть свои типы данных, к примеру СИ'шный int будет обзываться MPI_INT, а double — как ни странно MPI_DOUBLE :)
И вот он момент по плану моего ToDo, когда пора было меня int на double, но что же??? что-то произошло… при запуске (компиляция проходит нормально) выдаЁт кучу служебной информации с заголовком Memory Map.
Я с самого начала этой проблемы догадывался, что трабл в динамическом выделении памяти под массивы и в соответствующем их освобождении..
И со всем этим я проковырялся больше суток :'(
И вдруг как ни в чЁм не бывало наткнулся на просторах интернета на такую замечательную опцию запуска как MALLOC_CHECK_=0, которая не решила конечно проблемы, но перестала выдавать всю ту ужасающую специфическую информацию.
Немного о применении этой опции:
Установка MALLOC_CHECK_ в 0 может оказаться полезной, если вам мешает найти ошибку в памяти другая ошибка, которую в этот момент исправить нет возможности; эта установка позволяет работать с другими средствами отслеживания ошибок памяти.
Установка MALLOC_CHECK_ в 1 полезна в случае, когда никаких проблем не видно, поэтому определенные уведомления могут помочь.
Установка MALLOC_CHECK_ в 2 наиболее полезна при работе в отладчике, поскольку при возникновении ошибки он позволяет выполнить обратную трассировку вплоть до функций управления памятью. В результате вы максимально приблизитесь к месту возникновения ошибки.
Откомпилированную программу запускаем так:
MALLOC_CHECK_=0 /путь/к/программе
Кто-то конечно может осудить меня, но когда срок сдачи уже через «пол часа» и ты точно уверен, что в рамках поставленной задачи программа отрабатывает на все 100, то почему бы и нет??
P.S. используемый мною компилятор gcc и ОС Ubuntu 11,04
P.P.S. кстати классный редактор Geany, там есть заготорвленные команды/клавиши для компиляции и запуска программ под выбранный вами тип файл (в моем случае СИ'шный), но так как я использовал MPI, то немного модифицировал и в итоге остался доволен. Не среда разработки с отладчиком, как я люблю, но всЁ же удобно!
Комментариев нет:
Отправить комментарий