Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Среда разработки Cpp с он-лайн перекомпиляцией, Перекомпиляция cpp в режиме break 
:(
    Опции темы
MAKCim
Дата 11.6.2007, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(archimed7592 @  11.6.2007,  20:34 Найти цитируемый пост)
вопрос о самомодификации тоже не стоял ;)

Цитата(MAKCim @  11.6.2007,  18:41 Найти цитируемый пост)
вообще говоря модифицирование кода задача тривиальная

Цитата(archimed7592 @  11.6.2007,  18:44 Найти цитируемый пост)
MAKCim, че, правда что ль тривиальная? в С++?? а откуда такие выводы? 

самомодификация - это всегда модификация, но не наоборот
Цитата(archimed7592 @  11.6.2007,  20:34 Найти цитируемый пост)
ну вот смотри, удалю я определение какой-нибудь переменной, которая сейчас(момент исполнения, в который решили модифицировать код) находится в области видимости. тогда в ещё не модифицированном образе нужно выполнить деструктор для удалённого объекта. а если деструктор бросит исключение? а как сбиндить старое состояние процесса на новой образ? я вижу одни проблемы... 

любое модифицирование - это в любом случае повторная генерация кода (как ты уже заметил в одном из постов)
в результате получим исполняемый образ, допустим ELF образ
далее сравниваем загруженный образ с только что полученным и сохраняем текущее состояние процесса (важен стек и глобальные данные) (в случае нехватки ОЗУ можно на худой конец диск использовать), причем при сохранении указываем информацию, которая будет необходима для того, чтобы заменить значения соответствующих данных на сохраненные при новом старте образа (при добавлении кода и данных адреса смещаются)
далее запускаем новый процесс, который будет исполнять новый образ (формируем его адресное пространство, восстанавливая сохраненную информацию)
важно отметить, что модифицирование возможно только еще невыполнявшегося кода, поскольку иначе нельзя


Это сообщение отредактировал(а) MAKCim - 11.6.2007, 21:04


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Mayk
Дата 11.6.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 5
Всего: 134



Цитата(archimed7592 @  11.6.2007,  22:02 Найти цитируемый пост)
Mayk, точно технологию не знаю, но, вроде как "онлайн" модификация исходника реализуется посредством рефлексии, которую поддерживает .net, но не поддерживает c++(не дай Б-г такое счастье

Два месяца назад я сдавал лабы на с++, которые были выполнены на winapi без всякого .net'а. При некрупных изменениях всё прекрасно работало. 

Цитата(MAKCim @  11.6.2007,  22:41 Найти цитируемый пост)
вообще говоря модифицирование кода задача тривиальная
не может быть, чтобы в GDB этой операции не было 

Вообще поиск даёт положительный ответ на запрос «gdb "fix and continue"»
Вот например
Цитата(http://www.ecos.sourceware.org/ml/gdb/2006-03/msg00162.html)

we have implemented a new GDB/GCC feature to fix a modified C source code into
a running program like it is done with DBX at Solaris. Is there any interest to include 
this changes into the GDB/GCC repository. This changes have only been done
for x86 systems.


Так что основания полагать что gdb это теоретически может уметь есть.
Дальнейшие следования по url'ам наводят на (правда это для darwin'а)
Цитата(darwingrok.physics.ox.ac.uk:8080/source/xref/gdb/src/gdb/fix-and-continue.c - )

  const char *usage = "Usage: fix bundle-filename source-filename [object-filename]";

но такой команды мой gdb не понимает. smile 




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 11.6.2007, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Mayk @  11.6.2007,  21:59 Найти цитируемый пост)
но такой команды мой gdb не понимает

видно был собран без
Цитата

fix-and-continue.c



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
rvny
Дата 13.6.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 5.4.2007

Репутация: нет
Всего: нет



А ведь visual studio с 6ой версии кажется это умела делать? Т.е. с 1998 года у микрософт это было!
В 2003 с выходом net 1, 1.1 перестала работать (только переменные можно было смотреть).
А в 2005 visual studio снова появилось break , modify, and continue

Бывает ведь иногда нужно что-то подправить (В значениях переменных), либо дописать проверку, или изменить поведение внутри функции, но не естественно саму функцию (без изменения конечно передаваемых переменных).
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.1138 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.