Неожиданный выход GDB. Процесс GDB завершен. Баг GDB?

Рейтинг: 1Ответов: 1Опубликовано: 28.03.2023

При запуске отладчика gdb в qt creator выбрасывается такое окно. введите сюда описание изображения

Никаких подробностей я не получаю, единственное что я заметил, что когда ошибка появляется , gdb не может загрузить контекст. В поле контекста я вижу только следующее : введите сюда описание изображения Данная загрузки крутиться секунды 2 и вылетает ошибка. Никаких лишних точек остановы нет, вычисляемых выражений вообще нет. консоль отладчика QML

Настройки выставлены такие: введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения введите сюда описание изображения

Не могу разобраться в чём причина, все решения, что я находил, я применял(видно по настройкам), кроме, разве что, сборки старой версии из исходников и её устакновик.

gdb -v GNU gdb (Ubuntu 12.0.90-0ubuntu1) 12.0.90 Qt 5.15.3 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 11.3.0) on "xcb" OS: Ubuntu 22.04.1 LTS [linux version 5.15.0-67-generic]

Дополнительные подробности по ответу:
(0) - Папка существует, процесс сам по себе запускается, путь к исполняемому файлу указан верно(иначе отладка наверное не запустилась бы в принципе), процесс без отладчика запускается и запускался сотни раз не только на моей машине(моя машина - родная машина кода).
По поводу запускается и падает - сейчас попробовал запустить с точкой остановки на 1-й строке main-a - падает, переставил точку остановы подальше - на метод в классе , который читает входные данные - всё остановилось там, где надо, не упало, контекст виден(упадёт, если продолжать отладку по f11 уже на следующем шаге(там заход в метод), но если в метод не заходить, нажать f10, то не упадёт - такое на нескольких разных методах происходит). Если запустить без точки остановы - получаю SIGABRT.

(1) - поведение не поменялось

(2) - вот момент, на котором всё падает(постарался всё конфиденциальное убрать):

>&"python theDumper.fetchVariables({\"autoderef\":1,\"context\":\"\",\"displaystringlimit\":300,\"dyntype\":1,\"expanded\":[\"local\",\"inspect\",\"return\",\"watch\"],\"fancy\":0,\"formats\":{},\"nativemixed\":0,\"partialvar\":\"\",\"passexceptions\":0,\"qobjectnames\":1,\"resultvarname\":\"\",\"stringcutoff\":100000,\"timestamps\":0,\"token\":273,\"typeformats\":{},\"watchers\":[]})\n"
>&"/build/gdb-wIRHdd/gdb-12.0.90/gdb/value.c:1731: internal-error: value_copy: Assertion `arg->contents != nullptr' failed.\nA problem internal to GDB has been detected,\nfurther debugging may prove unreliable."
>&"\n"
>&"----- Backtrace -----\n"
>&"Backtrace unavailable\n"
>&"---------------------\n"
>~"/build/gdb-wIRHdd/gdb-12.0.90/gdb/value.c:1731: internal-error: value_copy: Assertion `arg->contents != nullptr' failed.\nA problem internal to GDB has been detected,\nfurther debugging may prove unreliable."
>~"\nQuit this debugging session? "
>~"(y or n) [answered Y; input not from terminal]\n"
>&"\nThis is a bug, please report it."
>&"  For instructions, see:\n"
>&"<https://www.gnu.org/software/gdb/bugs/>.\n\n"
>~"/build/gdb-wIRHdd/gdb-12.0.90/gdb/value.c:1731: internal-error: value_copy: Assertion `arg->contents != nullptr' failed.\nA problem internal to GDB has been detected,\nfurther debugging may prove unreliable."
>~"\nCreate a core file of GDB? "
>~"(y or n) [answered Y; input not from terminal]\n"

dHANDLE GDB ERROR: Процесс был завершён принудительно.
dProcess crashed
dHANDLE GDB ERROR: Процесс был завершён принудительно.
dProcess crashed
dGDB PROCESS FINISHED, status 1, exit code 6 (0x6)
dNOTE: INFERIOR ILL
dState changed from InferiorStopOk(10) to InferiorShutdownRequested(12)
dCALL: SHUTDOWN INFERIOR
dNO GDB PROCESS RUNNING, CMD IGNORED: kill  12
dINFERIOR FINISHED SHUT DOWN
dState changed from InferiorShutdownRequested(12) to InferiorShutdownFinished(13)
dState changed from InferiorShutdownFinished(13) to EngineShutdownRequested(14)
dCALL: SHUTDOWN ENGINE
dPLAIN ADAPTER SHUTDOWN 14
dINITIATE GDBENGINE SHUTDOWN, PROC STATE: 0
dNOTE: ENGINE SHUTDOWN FINISHED
dState changed from EngineShutdownRequested(14) to EngineShutdownFinished(15)
 Отладчик завершился.
dState changed from EngineShutdownFinished(15) to DebuggerFinished(16)

Если запускаю через консоль, то всё хорошо:

gdb ./ProgName
run
[Inferior 1 (process 34928) exited normally]

Ответы

▲ 1Принят

Алгоритм поиска причины:

(0) Проверить что "текущая папка" в которой нужно запустить процесс существует. Проверить верно ли указан путь к исполняемому файлу. Запускается ли процесс без отладчика? Запускается и падает или вообще не стартует? Возможно, не находит каких-то *.so?

(1) Снять галочки "Отладчик/переменные и выражения/использовать помощников отладчика", "Отладчик/GDB/load GDB pretty printers", "Отладчик/GDB/load .gdbinit on startup". Возможно, дело в стороннем коде, загружаемом в процесс отладчика. Возможно, отключится просмотр переменных в отладчике, но, по крайней мере будет примерно понятно почему. Если отключение этих галочек меняет поведение, то смотреть содержимое .gdbinit и т.д.

(2) В режиме отладчика, "View > Views > Debugger Log". Возможно, в окне лога какая-то информация о причинах падения. Если сообщения в логе непонятны, приложите лог к тексту вопроса.