Сбой приложения в GDB, но не при нормальной работе, происходит сбой в libcrypto - PullRequest
0 голосов
/ 02 октября 2019

У меня есть приложение Qt, которое отображает WebView (на основе webkit). Я пытаюсь отладить его с помощью GDB. Когда я запускаю приложение через gdb, оно почти сразу падает. Приложение запускается без проблем при выполнении вне GDB.

Причина сбоя:

Thread 1 "myapp" received signal SIGILL, Illegal instruction.
0x4a4d9a88 in ?? () from /usr/lib/libcrypto.so.1.0.2

Так как ошибка SIGILL, возможно, что GDB загружает библиотеку из неправильногоpath?

Приложение действительно простое, просто отображает WebView по определенному URL:

    ui->webView->page()->mainFrame()->setUrl(QUrl(urlString));

Приложение падает в GDB после выполнения строки выше.

среда - это встроенная система, работающая под управлением Linux на архитектуре arm:

Linux hh4 3.1.10-2.8.5+g841700f8a2ea #1 SMP PREEMPT Fri May 3 18:48:07 UTC 2019 armv7l GNU/Linux

Любая помощь в понимании того, почему приложение падает в gdb, приветствуется.

1 Ответ

0 голосов
/ 03 октября 2019

GDB загрузка неправильной библиотеки возможна.

Простой способ выяснить это - установить точку останова на main() - к которой можно ожидать, что библиотека будет отображаться в памяти в процессе.

Возможно, вы используете GDBчтобы проверить, в качестве альтернативы, получить оболочку в целевой системе и запустить

losf -p <process_id>

В этом списке будут перечислены все открытые дескрипторы файлов, принадлежащие процессу, включая все разделяемые библиотеки, отображаемые в память,

Если вы как-то используете библиотеки хоста разработки, это определенно объяснит это.

...