LINUX.ORG.RU

запустить программу в дебаггере в обратном порядке

 , , ,


1

1

Лет 10 назад читал о каких-то мега-ынтырпрайзных отладчиках что позволяют пускать программы в обратном направлении.

И вот иду я, значит, в сортир сегодня и меня осеняет: а что если каждые n-инструкций программа бы форкалась и форки бы останавливались с SIGSTOP? Тогда для «отмотки назад» нужно просто выбрать нужный форк.

Конечно, возникнут некоторые проблемы с IO (файлы и сокеты, время, генерация рандомных чисел итп), но, в целом, мне кажется это интересная задумка.

Что скажешь, лор?

cast tailgunner, mv, madcore, anonymous, sdio, hizel, mashina

(если кто хочет добавиться или убраться из этого cast-списка — говорите)

★★★★★

вроде как gdb это и так изкоробки умеет, по крайней мере в документации упоминалось

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

А какой от этого толк?

«[...] it is not unusual to realize that you have gone too far, and some event of interest has already happened. If the target environment supports it, GDB can allow you to “rewind” the program by running it backward.» (c) gdb

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

хэши ломать удумал?

Я — нет, но для риверс-инжиниринга это хорошая фича.

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

Штука тормозная и до памяти охотливая, так что запускать надо недалеко от критического участка.

А, и на новых процах может вываливаться из-за неполной поддержки SSE4. Нужно патчить libc, чтобы она не выбирала продвинутые варианты функций.

i-rinat ★★★★★
()
Ответ на: комментарий от Dron

Некоторые программы работают слишком долго чтобы упасть или дойти до break point (скажем, слишком долгая инициализая из-за кучи зависимостей). Вот тут было бы клёво отматывать и патчить на лету. Правда, в таких запущенных случаях вряд ли это будет нормально работать из-за, например, большого потребления ресурсов (со слов i-rinat, я ему верю).

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

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

i-rinat ★★★★★
()
Ответ на: комментарий от d_a

Кстати, как так вышло, что ты не попал в список элиты в ОП?

Потому что я не вхожу в элиту? Если мне есть что сказать, я и сам приду.

i-rinat ★★★★★
()

это здесь вовсю шутят? тогда анекдот:

- а правда ли, что если диск с windows nt проиграть в обратном порядке, то можно услышать сатанинское послание от билла гейтса?
- это ещё ничего... вот если его в нормальном порядке проиграть, он вам установит windows nt

odii
()
Ответ на: комментарий от i-rinat

Потому что я не вхожу в элиту?

А, проехали, я просто думал уже списки за третий квартал выложили, а это оказалась паста.

d_a ★★★★★
()

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

mv ★★★★★
()

Оно бы работало офигительно медленно. Хорошо если дождешься как дойдёт до main()

nerdogeek
()

Попытки замутить алгебраическое программирование куда веселее и забористее.

anonymous
()

Конечно, возникнут некоторые проблемы с IO

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

http://criu.org

вот вроде товарищи из параллельс что-то делают в нужном направлении

а если тебе прямо здесь и сейчас, то use simics Luke

dimon555 ★★★★★
()

Форк это сука. Ты пытался когда либо форкнут процесс с мутексом? Результат непредсказуемый.

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