LINUX.ORG.RU

Отладка(отладчики) без использования вызова ptrace()

 ,


0

2

Существуют ли отладчики под linux, которые бы не использовали ptrace? Например чтобы отлаживать програму без исходников, которая для антиотладки форкается, родительский процесс цепляется к форку через тот самый ptrace() и в рантайме что-то там модифицирует. Как вообще можно реализовать такой отладчик?Для отладки такой штуки надо свой модуль ядра иметь?

★★★★★

Последнее исправление: SZT (всего исправлений: 1)

Могу ошибатся но:

set follow-fork-mode режим

Устанавливает реакцию отладчика на вызов fork или vfork в программе. режим может быть:

  • parent После ветвления отлаживается исходный процесс. Дочерний процесс выполняется беспрепятственно. Это поведение по умолчанию.
  • child После ветвления отлаживается новый процесс. Родительский процесс выполняется беспрепятственно.
  • ask Отладчик будет запрашивать один из этих вариантов.
ThePretender
()

на виртуальной машине можно всё

dimon555 ★★★★★
()
Ответ на: комментарий от ThePretender

Мне не нужна какая-то особая реакция отладчика на fork. Мне нужен отладчик, не использующий вызов ptrace()

SZT ★★★★★
() автор топика
Ответ на: комментарий от ThePretender

Использование виртуальной машины не всегда приемлемо. Например, отлаживаемое приложение может в процессе работы взаимодействовать с железом, которое эмулятор не эмулирует.

SZT ★★★★★
() автор топика
Ответ на: комментарий от SZT

тогда удалённая отладка кернела с другой машины. полный стоп системы в любой момент. правда, надо заметить, что софту-то и виртуалкам обычно пофигу, а вот железо как раз подобных вещей не любит и всякие там остановки в отладчике напрочь убивают логику работы с железом.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

Только мне не ядро надо отлаживать, а пользовательское приложение. Полный стоп всей системы мне не нужен.

SZT ★★★★★
() автор топика

Так и задавай вопрос: «Как дебажить программу, которая форкается и цепляется к форку ptrace'ом».

anonymous
()
Ответ на: комментарий от anonymous

Вопрос не по конкретному сценарию отладки программы которая форкаеся и цепляется к форку через ptrace. Вопрос в том, как отлаживать программу, которая в процессе работы каким-то образом препятствует использованию ptrace (например форкается и цепляется к форку через ptrace и динамически меняет исполняемый код посредством этого. Или лезет в /proc/self/status и проверяет там TracerPid. Или еще как-нибудь).

SZT ★★★★★
() автор топика
11 сентября 2015 г.
Ответ на: комментарий от SZT

Думаю, тебе придётся реализовывать что-то такое в ядре.
Смотри реализацию gdbserver. Сделать свой системный вызов и переделать на него gdbserver.

mittorn ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.