| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Падает программа по непонятной мне причине |
| Автор: Elfet 19.5.2010, 20:44 | ||||
| Всем привет! Пишу программу для расчёту потока по диплому. Однако возникла проблема, когда запускаю расчёт программа через 5 минут падает по непонятной мне причине. Запустил в дебаге, но это не помогло мне понять по чему падает. Возможно, вам что-то это скажет? Почему может падать программа?
Заранее спасибо! |
| Автор: azesmcar 19.5.2010, 20:46 |
| а что это может сказать? покажи код на какой строке вылетает, debugger должен показывать. |
| Автор: Elfet 19.5.2010, 20:47 | ||
В консоль приложения выводится следующее:
Добавлено через 25 секунд azesmcar, в том-то и дело что не показывает :( |
| Автор: azesmcar 19.5.2010, 20:47 |
| похоже на то, что удаляется какой-то "левый" указатель. Код покажи. Добавлено через 1 минуту и 6 секунд попробуй пошаговое выполнение, проект компилируется в debug или в release? |
| Автор: Elfet 19.5.2010, 20:58 | ||||
| azesmcar, кода там оочень много Проект компилируется в debug. Пошагово невозможно сделать, так как падает после огромного количества итераций и точно сказать где не могу. Добавлено через 10 минут и 35 секунд Что-то при работе с памятью видимо:
Как бы найти то из-за чего падает, если дебагер не показывает это место? Добавлено через 11 минут и 35 секунд И на одном и том же месте:
|
| Автор: azesmcar 19.5.2010, 21:11 |
| может пора обновить компилятор? судя по коду ты все еще шестой версией работаешь. |
| Автор: Elfet 19.5.2010, 21:14 |
| У меня вообще-то minGW из QtSDK |
| Автор: Earnest 19.5.2010, 21:16 |
| Можно повставлять в код проверки хипа, чтобы понять, после чего он портится. Примертно так: ASSERT (_CrtCheckMemory()); Сначала выясни, в каком примерно участке кода: когда программа валится (в среде), посмотри стек. Может, сразу поймешь, в чем дело. Если нет, обкладывай проверками свой цикл или что-там у тебя. После каждой строчки кода вставлять проверки не надо, умаешься ждать. Действуй дихотомическим разбиением, сужай круги. |
| Автор: azesmcar 19.5.2010, 21:17 |
там же вроде MFC используется? или я не там смотрю? а дебагер какой? Добавлено через 4 минуты и 19 секунд да..это я не туда смотрел. |
| Автор: Elfet 19.5.2010, 21:26 |
| Earnest, а куда вставить и что для проверки хипа? azesmcar, дебагер тоже из коробки SDK. |
| Автор: jonie 20.5.2010, 00:45 |
| у вас память порченная... если проект под nix модно запустить, то используйте valgring, также помочь может продукт IBM Rational PurifyPlus (винда) или другие продукты (http://en.wikipedia.org/wiki/Memory_debugger) а также статья мелкософта http://msdn.microsoft.com/en-us/library/aa293901%28VS.60%29.aspx |
| Автор: Elfet 20.5.2010, 11:36 | ||
Блин,
А есть ли какие-нибудь с поддержкой minGW? И желательно бесплатные? |
| Автор: Elfet 20.5.2010, 12:20 |
| azesmcar, да я все просмторет, там в основном под linux в у меня windows. |
| Автор: jonie 20.5.2010, 22:19 | ||||||
© http://www.mingw.org/wiki/FAQ ну и гугл по фразе "mingw memory debugger" найдет чего-нибудь.. |
| Автор: kamre 20.5.2010, 23:50 | ||
Лучше собрать под MSVC и там с отладчиком запускать, т.к. в MinGW отладчик тот еще отстой. |
| Автор: jonie 21.5.2010, 08:57 |
| kamre, в mingw нет отладчика... есть dbg, но это не часть mingw вроде как... |
| Автор: kamre 21.5.2010, 09:52 | ||
Разумеется имелся ввиду MinGW GDB Debugger, это можно считать частью MinGW toolchain. Так вот этот отладчик и его интеграция куда-либо (QtCreator/Eclipse/NetBeans) хуже работает, чем встроенный в MSVC отладчик. Да и нормальные тулзы вроде IBM Rational Purify поддерживают только MSVC, причем есть даже интеграция в студию и работать весьма удобно (по сравнению с valgrind под линуксом). |
| Автор: Elfet 21.5.2010, 13:29 | ||
Мы всё под MinGW делали, под MSVC наверное сложно будет собрать. |
| Автор: azesmcar 21.5.2010, 13:40 |
| Elfet У тебя очевидная проблема, нужен дебаггер, чтобы понять где находится источник проблемы..решений море, либо ставь нормальный дебаггер, используй среду, где есть что-то подобное. В твоем случае наверное проще всего запустить под линукс valgrind, он бесплатный и с компиляцией проблем не будет. еще можешь повсюду поставить вывод логов, по логам поймешь где примерно вылетает, а там интуитивно найдешь. |
| Автор: kamre 21.5.2010, 14:03 | ||
Сборка через что организованна? Если через qmake или CMake, то там все легко на MSVC можно собрать и отлаживать. Другие системы сборки при разработке с Qt, мне кажется, использовать не рационально. |
| Автор: Elfet 21.5.2010, 17:53 |
| kamre, через qmake. Что я знаю так это то что нужно пересобирать Qt отдельно под MSVC + нужно ещё и буст и другие библиотеки пересобирать. |
| Автор: kamre 21.5.2010, 18:27 | ||
Qt, собранную под MSVC 2008, уже давно можно скачать с оффсайта. Boost проще пересобрать самому, хотя вроде и уже собранные под MSVC есть: http://www.boostpro.com/download. |