Я пытаюсь отлаживать приложение на встроенном устройстве, работающем на старой версии Linux/Qtopia. Я попросил о помощи на форумах QT, но люди там не знают о старых программах и. Мне бы очень хотелось помочь с помощью стратегий отладки.Сложно отлаживать встроенное приложение
Моя программа выйдет из строя после того, как основное окно было построено, то есть некоторое время в цикле событий. Но в зависимости от порядка функций в конструкторе иногда он запускается только с консоли, а иногда он запускается только из значка. Несмотря на все мои усилия, я не могу сузить, что вызывает проблему.
Нет никакой ошибки или сигнала seg, но моя программа не будет продолжена, и деструктор не будет вызван. Мне кажется, что одна из первых вещей, которые произойдут в цикле событий, - это событие изменения размера и когда это вызвано, может измениться, если вы бежите с консоли или значка. Кроме того, различные виджеты в моем графическом интерфейсе будут инициализированы и нарисованы так, что это также потенциальный источник ошибок, если я не настроил что-то должным образом.
Параметры моей отладки ограничены, так как область, где происходит авария, не находится под моим контролем. Я попытался войти в файл и распечатать его в stderr, но это не помогло. Когда я добрался до состояния, где он запускается из значка, но не из консоли, я попытался запустить в gdb и strace, но он прошел нормально - классическая проблема отладки программного обеспечения, инициализирующаяся по-разному.
Моя следующая мысль - попытаться заставить дамп ядра, а затем проанализировать это. Как заставить основной дамп? Есть ли лучшая стратегия?
В конце моего конструктора я выводю на stderr и вызываю функцию инициализации с помощью таймера одиночного выстрела. Он должен запускать эту функцию, как только цикл события не занят. Первое, что я делаю в функции initialise, выводят на stderr, но программа выходит из строя, не отображая ее. Вот почему я думаю, что авария происходит в Qtopia. У меня нет источников Linux и Qtopia. Даже если бы я это сделал, это старые версии и перестройка их старыми компиляторами и т. Д. Была бы серьезной проблемой. – koan
В итоге я обнаружил эту ошибку в проблеме с тем, как я установил панель инструментов и меню в конструкторе. Хотя я и не нашел точной причины крушения, похоже, сейчас работает. Принимая этот ответ, поскольку это единственный ответ и содержит разумные советы. – koan