системные вызовы linux никогда не возвращаются при использовании удаленного отладчика GDB

Я пытаюсь удаленно отладить (используя gdbserver) приложение, работающее на iMX6. Моя установка — Ubuntu 16.04 LTS, и я использую QT Creator 3.5.1 (на основе 5.5.1 GCC 5.2.1).

Первое, что нужно отметить, это то, что удаленный отладчик QT GDB (одношаговый) прикладного уровня iMX6 работает, если я удаляю системные вызовы. "система(...)" или "чтение(...)". и т.д. Однако любая попытка выполнить системный вызов приводит к зависанию процесса. Системный вызов никогда не возвращается.

Второе, что следует отметить, это то, что приложение отлично работает при прямом запуске из iMX6 (включая системные вызовы). Я даже могу использовать GDB (командную строку) для отладки приложения. Здесь нет проблем.

В QT Creator я добавил дополнительные команды GDB «set remote system-call-allowed 1» к дополнительным командам отладчика, которые QT Creator запускает перед запуском приложения. Безуспешно, все еще висит. Все системные вызовы зависают и никогда не возвращаются.

Кто-нибудь знает, что здесь происходит? Почему мои системные вызовы не возвращаются.


person Sean Mayes    schedule 30.01.2018    source источник


Ответы (1)


Этот пост привел меня к ответу. QT: удаленная отладка на ARM с помощью QT Creator зависает, командная строка GDB работает нормально

Для быстрого ознакомления я изучил журнал, созданный QT. Выберите Windows->Просмотр->Журнал отладчика.

В моем случае, как и в другом посте, detach-on-fork был выключен.

Решение заключалось в

Добавьте 'set detach-on-fork on' в QTCreator как часть параметров отладчика (Инструменты->Параметры...., Отладчик: вкладка GDB: Дополнительные команды запуска).

person Sean Mayes    schedule 30.01.2018