Взлом приложения QT в коде дизассемблирования при запуске отладки в моем приложении и примере приложения QTC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Взлом приложения QT в коде дизассемблирования при запуске отладки в моем приложении и примере приложения QT

Сообщение Anonymous »

Тестирование основного приложения
Мое приложение QT прекрасно работает на моем компьютере с Windows 11 уже почти два года с тех пор, как я взял на себя его разработку. Недавно произошло следующее: когда я запускаю программу в режиме отладки, она сначала прерывает код дизассемблирования со следующим всплывающим сообщением триггера исключения с функцией-членом .show():
The inferior stopped because it triggered an exception.
Stopped in thread 0 by: Exception at 0x772a1fdf, code: 0xc0000005: read access violation at: 0xbaadf00c, flags=0x0 (first chance).

Дизассемблер останавливается здесь:
Изображение

Запуск кода после срабатывания этого исключения запускает программу, но иногда программа снова прерывается в дизассемблере и аварийно завершает работу.
Я компилирую с MSVC, и я пробовал несколько разных компиляторов, пробовал версии QT 5.2.0, 5.14.1 и 5.15.2, и все они выдают одну и ту же ошибку в Windows 11. Я также пробовал разные комбинации пакетов Windows SDK, и все дают один и тот же результат. Я пробовал инструменты VS Build 2015, 2017 и 2019 без изменений.
В итоге я установил Windows 10 на другой компьютер и запустил установку с помощью QT 5.14.1 и компилятора MSVC 15.9. 28307.2094 и Windows 10 SDK 10.0.17763.132, где он работает как положено и без проблем.
Настройка QT на моем компьютере с Win 11:
Изображение

Окно «О программе» моего QT Creator:
Изображение

Тестирование приложения QT по умолчанию
Это меня очень смутило. Я обратился за помощью на форумы QT здесь и обнаружил, что получаю ту же ошибку при тестировании примера приложения QT по умолчанию. Я использую QT Creator в качестве инструмента сборки и отладки. Это не проблема с кодом. Я создал новый проект QT с базовым кодом, предоставленным по умолчанию, и это выдает ту же ошибку:
#include "mainwindow.h"

#include

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}


Пример тестирования приложений в примерах QT
Как и в моей программе, «сбой» происходит при вызове функции .show(). называется. В данном случае это mainWin.Show(). При переходе/входе в него дизассемблер не работает:
Изображение
а это трассировка стека:
Изображение

Работа в режиме выпуска
  • Начать с отладки = тот же сбой
  • Начать без отладки = нет сбоев
Работа в режиме отладки
< ul>
[*]То же, что и выше

Похоже, что проблема в отладке.
И вот эти кнопки я имею в виду, когда говорю «начните с отладки»:
[img]https:/ /i.stack.imgur.com/H2VYu.png[/img]

Что я пробовал
  • Полная переустановка QT
  • Полная переустановка всех инструментов разработки и компиляторов Visual Studio.
  • Выбор «Игнорировать нарушения прав доступа при первом изменении» в настройках CDB – при этом исключается проблема с перехватом исключения при запуске отладки, однако ввод точки останова во время выполнения приводит к тому, что приложение снова прерывает код дизассемблера:
ntdll!DbgBreakPoint:
0x772c8c00 int 3
0x772c8c01 ret
0x772c8c02 int 3


Подробнее здесь: https://stackoverflow.com/questions/782 ... cation-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»