Название: Тройной вызов деструктора при закрытии приложения Отправлено: kamil от Февраль 14, 2016, 14:23 Я заметил что при отладке возникает странная ситуация, когда в стеке вызывов функций деструкторы некоторых объектов якобы вызываются три раза. Примерно так:
(http://zaripov.net/31.png) Но по факту только один раз. Если поставить брекпойнт на входе в деструтор картина такая: попадаешь во вход деструктора, при попытке сделать следующий шаг, снова попадаешь во вход деструктора, в стеке вызовов это появляется второй вызов деструктора. Снова делаешь шаг и снова попадаешь в тот же деструктор, в стеке вызовов уже третий вызов. Дальше все идет как обычно - проходишь шагами по всем командам в деструторе, выходишь из третьего вызова деструкора, и дальше попадаешь во втрой, в нем прыгаешь с самого начала на самый конец, и с первым вызовом так же. Это баг отладчика, или так и должно быть, и я что-то не понимаю? Название: Re: Тройной вызов деструктора при закрытии приложения Отправлено: Igors от Февраль 14, 2016, 14:28 Использую другие IDE и компилятор, но то же самое - оборачивает деструктор еще в неск вызовов. Зачем - хз, ну наверное "так надо"
Название: Re: Тройной вызов деструктора при закрытии приложения Отправлено: Old от Февраль 14, 2016, 14:39 Это баг отладчика, или так и должно быть, и я что-то не понимаю? А покажите что там в деструкторе в строках 47 и 48.Название: Re: Тройной вызов деструктора при закрытии приложения Отправлено: kamil от Февраль 14, 2016, 23:11 Это баг отладчика, или так и должно быть, и я что-то не понимаю? А покажите что там в деструкторе в строках 47 и 48.Код: 47 MainWindow::~MainWindow() { Но на самом деле в три приема вызываются многие деструкторы, и особой корреляции поведения с содержимым деструктора я не заметил. Хорошо, если это просто особенность работы отладчика, и не проблема в моем коде, то я могу спать спокойно. Название: Re: Тройной вызов деструктора при закрытии приложения Отправлено: kambala от Февраль 15, 2016, 00:05 вина это отладчика или нет очень легко проверить с помощью qDebug
Название: Re: Тройной вызов деструктора при закрытии приложения Отправлено: kamil от Февраль 15, 2016, 01:50 вина это отладчика или нет очень легко проверить с помощью qDebug Да, действительно, qDebug вызывается только один раз. Так что я думаю что это просто баг gdb. |