9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
1 | |
Вылетает на std::length_error exception05.09.2014, 17:49. Показов 5218. Ответов 17
Метки нет (Все метки)
название не очень отражает суть вопроса, но лучше я предумать не смог.
Есть программа собранная в дебаге (-g) к ней линкуется только одна библиотека libmysql.lib которая написана на Си и не знает что такое std::string, и вот эта программа время от времени вылетает на std::lenth_error exception который кидает string::append, но дебагер не может дать подробной информации почему и где это происходит (скрины ниже). Вопрос №1: почему программа собранная в дебаге не может дать нормальной информации про call stack? №2: что делать в таких случаях, как искать ошибку?
0
|
05.09.2014, 17:49 | |
Ответы с готовыми решениями:
17
Unhandled exception at at 0x75E717D2 in ConsoleApplication24.exe: Microsoft C++ exception: std::out_of_range at memory l Выдаёт ошибку "Unhandled exception at 0x00007F exception: std::bad_alloc in memory location" Грамотно обработать ошибку std::exception Ошибка при работе с std::exception* |
05.09.2014, 18:05 | 2 |
А при чём тут библиотека, если исключение происходит в самой программе?
Добавлено через 9 минут Используя try/catch поймай исключение, выведи на экран номер строки __LINE__ и имя функции __FUNCTION__\__PRETTY_FUNCTION__.
0
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
05.09.2014, 18:05 [ТС] | 3 |
castaway, я же и написал что библиотека тут не при чём, тогда почему я не получаю нормальных данных если программа собрана с флагом -g? Много других проблем и эксепшенов дебагер показывал нормально, а вот с этой беда.
0
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
05.09.2014, 18:29 [ТС] | 5 |
Хотя да, это вариант, попробую
да я бы не против, но там уже 19 файлов и 1413 строк чистого кода, я думаю у вас нету желания в нём разбираться Добавлено через 7 минут рано радоваться, try охватывающий всю функции main не поймал std::length_error. Откуда он тогда может взяться ? Magic
0
|
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
05.09.2014, 18:35 | 6 |
0
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
||||||
05.09.2014, 18:49 [ТС] | 7 | |||||
да, есть один
0
|
18842 / 9841 / 2408
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
05.09.2014, 19:04 | 8 |
OrmaJever, можешь показать чему равен первый параметр append? (gdb это умеет показывать)
Добавлено через 1 минуту В map нет никаких string Больше глобальных объектов нет? Добавлено через 1 минуту Это очень мало. Кидай архивом. Быстрее поможем.
1
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
05.09.2014, 19:13 [ТС] | 9 |
ну код, дак код. Там и makefile есть, я им под линукс собираю.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
05.09.2014, 19:26 | 10 |
OrmaJever,
0
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
05.09.2014, 19:31 [ТС] | 11 |
ForEveR, файл:строка пожалуйста
0
|
18842 / 9841 / 2408
Регистрация: 30.01.2014
Сообщений: 17,284
|
||||||
05.09.2014, 19:45 | 12 | |||||
OrmaJever, не помню бывает ли такое в mysql api, но если бывает, то надо бы проверять не возвращается ли ноль, вместо строки. Например (client.cpp:172)
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
05.09.2014, 19:48 | 13 | |||||
OrmaJever, В главной функции же.
2
|
18842 / 9841 / 2408
Регистрация: 30.01.2014
Сообщений: 17,284
|
||||||
05.09.2014, 19:58 | 14 | |||||
ForEveR, OrmaJever, однозначно вертает. Тоже сейчас на это вышел. -1 кастится к unsigned int внутри append и срабатывает вот эта проверка:
0
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|||||||||||
05.09.2014, 20:15 [ТС] | 15 | ||||||||||
да, вставил перед
0
|
18842 / 9841 / 2408
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
05.09.2014, 20:29 | 16 |
Разве он молчал? Он честно показал стек. Выше функции append только main.
Не по теме:
1
|
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
|
|
05.09.2014, 20:57 [ТС] | 17 |
0
|
18842 / 9841 / 2408
Регистрация: 30.01.2014
Сообщений: 17,284
|
|
05.09.2014, 21:11 | 18 |
Каждая из опций включает или отключает группу оптимизаций (их там много), вот мануал. Ставь -O2, в большинстве случаев этого достаточно.
1
|
05.09.2014, 21:11 | |
05.09.2014, 21:11 | |
Помогаю со студенческими работами здесь
18
Не получается перехватить исключение, унаследованное от std::exception Создание своего класса исключений, наследование std::exception mingw32, SEH, std::exception, setjmp/longjmp, signal Unhandled exception.std::out_of_range at memory location. ошибка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |