Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2013, 15:53   #1
igormat
 
Регистрация: 21.07.2011
Сообщений: 4
По умолчанию отладка под gdb

Всем привет. Столкнулся с проблемой, что в рантайме происходит кордамп. При просмотре стека вызывается __cxa_pure_virtual () from /usr/lib/libstdc++.so.5. Подозреваю, что где-то идет пропил по памяти и перетирается таблица виртуальных функций. Отсюда вопрос: как в gdb вытащить таблицу виртуальных функций объекта?
igormat вне форума Ответить с цитированием
Старый 05.03.2013, 16:14   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Подозреваю, что где-то идет пропил по памяти и перетирается таблица виртуальных функций.
Тогда бы вызвалось вообще что угодно. Вероятнее, что у Вас получилось вызвать чистую виртуальную функцию.
Abstraction вне форума Ответить с цитированием
Старый 05.03.2013, 16:47   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Вероятнее, что у Вас получилось вызвать чистую виртуальную функцию.
Что чаще всего случается если вызывать виртуальную функцию из деструктора.
waleri вне форума Ответить с цитированием
Старый 05.03.2013, 19:55   #4
igormat
 
Регистрация: 21.07.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Что чаще всего случается если вызывать виртуальную функцию из деструктора.

Точно нет, т.к. классы приметивные и тело деструктора пустое
igormat вне форума Ответить с цитированием
Старый 05.03.2013, 19:56   #5
igormat
 
Регистрация: 21.07.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Тогда бы вызвалось вообще что угодно. Вероятнее, что у Вас получилось вызвать чистую виртуальную функцию.
Хм, интересно как это может произойти? Можно пример кода?
igormat вне форума Ответить с цитированием
Старый 05.03.2013, 23:28   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Простейший пример, как уже сказано, вызов виртуальной функции в конструкторе или деструкторе того класса, в котором она является чистой виртуальной. У Мейерса вроде были ещё примеры, сейчас не вспомню.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отладка программы, написанной под bios (*.bin) Max1548 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 13.02.2013 22:05
нужна программа на Assembler под Linux на компиляторе gdb... КатеринаКрамер Помощь студентам 2 30.12.2011 22:55
Отладка при помощи gdb kosh1984 Общие вопросы C/C++ 0 08.02.2009 14:36
.gdb в .dbf Алёна БД в Delphi 6 03.04.2008 23:23
*.GDB SunKnight БД в Delphi 7 28.02.2008 19:08