@qvlad

Можно ли подключиться к запущенной программе без отладочной информации с помощью gdb и подключить к ней отладочную информацию?

Можно ли подключиться к запущенной программе без отладочной информации с помощью gdb и подключить к ней отладочную информацию имея бинарник с отладочной информацией не прерывая выполнение программы.
objcopy --only-keep-debug предварительно к запущенной программе сделан не был.
  • Вопрос задан
  • 1804 просмотра
Пригласить эксперта
Ответы на вопрос 3
ifaustrue
@ifaustrue
Пишу интересное в теллеграмм канале @cooladmin
Нет.
Ответ написан
Комментировать
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Можно. Запустить gdb так:
gdb program-image-with-debug-symbols
и выполнить из командной строки gdb
attach pid
где pid -- номер процесса к которому надо подключиться.

Ну и, понятное дело, чтобы это работало правильно, program-image-with-debug-symbols должна отличаться от выполняющейся программы только наличием отладочной информации.
Ответ написан
@qvlad Автор вопроса
Можно. Запустить gdb так:
gdb program-image-with-debug-symbols
и выполнить из командной строки gdb
attach pid
где pid -- номер процесса к которому надо подключиться.

Ну и, понятное дело, чтобы это работало правильно, program-image-with-debug-symbols должна отличаться от выполняющейся программы только наличием отладочной информации.

gdb /tmp/telemetry 
GNU gdb (GDB) 7.5.1
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "arm-buildroot-linux-gnueabi".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/telemetry...done.
(gdb) attach 6986
Attaching to program: /tmp/telemetry, process 6986
Reading symbols from /lib/ld-linux-armhf.so.3...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux-armhf.so.3
0x403eb276 in ?? ()
(gdb) bt
#0  0x403eb276 in ?? ()
#1  0x4045a488 in ?? ()
#2  0x4045a488 in ?? ()
gdb /tmp/telemetry
b InfoListener::saveValue
Breakpoint 1 at 0x241e8: file InfoListener.cpp, line 949.
(gdb) c
Continuing.

После запуска вижу соттветствующий лог из функции, но программа не останавливается на установленном breakpoint.
Если сразу под gdb запустить бинарник с отладочными символами и поставить ту же точку остановки, то все работает корректно. Если подключаться к процессу запущенному с бинарником с отладочными символами то тоже все работает корректно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы