Runtime Error, в debug версии Qt приложения

Тема в разделе "WASM.BEGINNERS", создана пользователем Solan, 24 май 2009.

  1. Solan

    Solan New Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    6
    Здраствуйте!
    При компиляции релизной версии никаких ошибок в процессе работы нет. Недавно скачал QtCreator решил попробовать отладить программу в тамошнем debugere. Для этого нужно было создать debug версию проекта.
    В откомпилированном варианте вылетает сообщение "Runtime error. Program...(путь к exe). This Application has reguested the Runtime to terminate it in an unusual way. Please contact the applications support team for more information"

    Ошибка появляется при нажатии на пункт меню в главном окне. В обработчике события клика по этому меню запускается новый поток, открывается Com порт и производится зацикленное чтение из него(работа с портом на winapi)

    Буду очень признателен если вы сможете помочь.

    Из-за чего вообще может появляться данная ошибка???

    И еще вопрос - можно ли как-нибудь извлечь отладочную информацию из debug файла в Qt приложении (компилируется gcc) и отлаживать программу в исходных текстах в стороннем отладчике, Olly например?
     
  2. intel_x128

    intel_x128 New Member

    Публикаций:
    0
    Регистрация:
    17 май 2009
    Сообщения:
    345
    1. Предоставьте код
    2. В качестве стороннего отладчика воспользуйтесь IDA 5.2
     
  3. Solan

    Solan New Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    6
    В коде - ничего особенного нету, однако сегодня я заметил одну вещь:

    У меня есть класс интерфейса, наследующий у QMainWindow. В нем объявлен статический член, объект потока (QThread). Также отдельно создается глобальный объект класса QDialog. В него я вывожу отладочную информацию из всех остальный функций программы. В последствии я планировал его просто убрать.
    Так вот в методе run объекта QThread (главная функция потока), я добавляю некоторые строки текста в компонент QTextEdit - член отладочного окна класса QDialog. Методом QTextEdit::append(QString(const char*)).

    Именно эти строки и рушат программу. Когда я их комментирую ошибка не вылетает. Помимо них, как я уже писал раньше в функции run открывается порт Com1 и начинается его чтение в цикле и обработка принятых данных.
    Причом release версия работает без проблем. Не знаю что и думать.

    Попробую отладчик который вы посоветовали, спасибо. А насчет формата отладочной информации вы не знаете?
     
  4. Solan

    Solan New Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    6
    В коде - ничего особенного нету, однако сегодня я заметил одну вещь:

    У меня есть класс интерфейса, наследующий у QMainWindow. В нем объявлен статический член, объект потока (QThread). Также отдельно создается глобальный объект класса QDialog. В него я вывожу отладочную информацию из всех остальный функций программы. В последствии я планировал его просто убрать.
    Так вот в методе run объекта QThread (главная функция потока), я добавляю некоторые строки текста в компонент QTextEdit - член отладочного окна класса QDialog. Методом QTextEdit::append(QString(const char*)).

    Именно эти строки и рушат программу. Когда я их комментирую ошибка не вылетает. Помимо них, как я уже писал раньше в функции run открывается порт Com1 и начинается его чтение в цикле и обработка принятых данных.
    Причом release версия работает без проблем. Не знаю что и думать.

    Попробую отладчик который вы посоветовали, спасибо. А насчет формата отладочной информации вы не знаете?