Как Вы начинаете работать на основе программы снова в gdb с 'удаленной целью'?

Как правило, хорошими разделителями могут быть любые обычные символы клавиатуры, которые больше нигде не используются в данных. Мое предложение будет либо '|' или '/'.

29
задан 2 revs 16 September 2008 в 20:09
поделиться

3 ответа

По-видимому, Вы выполняете gdbserver во встроенной системе.

можно попросить, чтобы он перезапустил программу вместо того, чтобы выйти с цель, расширено-удаленная

4
ответ дан 28 November 2019 в 02:02
поделиться

К сожалению, я не знаю о способе перезапустить приложение и все еще поддержать Вашу сессию. Обходное решение должно задержать ПК к точке входа Вашей программы. Можно сделать это любым вызовом:

jump function

или

set $pc=address.

при порче аргументов main Вы, возможно, должны настроить их снова.

Редактирование:

существует несколько протестов с вышеупомянутым методом, который мог вызвать проблемы.

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

Так, с помощью перехода не то же самое как перезапуск программы.

8
ответ дан 28 November 2019 в 02:02
поделиться

Обычный способ - "jump _start".

2
ответ дан 28 November 2019 в 02:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: