![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
rvny |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.4.2007 Репутация: нет Всего: нет |
Здравствуйте!
Есть ли среды разработки в линуксе или возможности подобные microsoft visual studio: Т.е. в режиме отладки не только смотреть и изменять переменные, но и добавлять код/удалять код/модифицировать и в дальнешем пошагово продолжать отлаживать программу (с изменным кодом) без повторной остановки программа и запуска с перекомпиляцией. Или в линуксе к сожалению только для просмотра значений можно использовать kdevelp, qdevelop в режиме отладки? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
На сколько мне известно, под Linux не существует средств (по крайней мере бесплатных), позволяющих модифицировать код во время отладки и автоматически его подцеплять.
KDevelop, Code::Blocks и др. позволяют просматривать значения переменных. Не удивлюсь, если и изменять, но я этим никогда не пользовался (или просто забыл). |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 8 Всего: 58 |
rvny,
Странно. А какой смысл в модифицировании кода во время выполнения ? Может проще поставить пару assert'ов ? Это сообщение отредактировал(а) GrayCardinal - 10.6.2007, 04:06 |
|||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 5 Всего: 97 |
rvny, kdbg. Но сомневаюсь, что такая возможность там есть (в доках не видел).
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 3 Всего: 93 |
вообще то возможности студии "на лету" модифицировать код во время отладки к с++ отношения не имеет - это привилегия .net кода. при модификации unmanaged с++ кода, AFAIK, студия просит пересборку проекта.
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
Incremental link действительно имеет отношение к с++ не более чем к фортрану. В конце концов .exeшники собирают linker'ы. VS вполне сносно позволяет модифицировать немного umanaged кода в рантайме. Поиск в гугле говорит, что в природе есть
Из док-ии по названному dbx
Поиск по ключевым словам " sun studio linux fix continue " даёт
Так что есть основания полагать что fix'n'continue в linux мире существует. Про другие IDE и более свежие версии sun studio искать лень. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 3 Всего: 93 |
Mayk, точно технологию не знаю, но, вроде как "онлайн" модификация исходника реализуется посредством рефлексии, которую поддерживает .net, но не поддерживает c++(не дай Б-г такое счастье
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
вообще говоря модифицирование кода задача тривиальная
не может быть, чтобы в GDB этой операции не было -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 3 Всего: 93 |
MAKCim, че, правда что ль тривиальная? в С++?? а откуда такие выводы?
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
archimed7592,
как? ![]() Это сообщение отредактировал(а) MAKCim - 11.6.2007, 18:56 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: нет Всего: 43 |
![]()
|
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
nerezus,
![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 3 Всего: 93 |
MAKCim, чего как? или это пример как модифицировать? дык речь о том, что среда сама интерактивно перекомпилирует, пересобирает и каким-то макаром биндит срарое состояние программы на новый образ. проблема в том, что в с++ очень много ньюансов со стеком, с исключениями и тому подобных граблей. если задача и выполнима, то уж точно она не тривиальна.
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
да модифицирование кода - действительно тривиальная задача, и я это показал вопрос о том, как это использовать, не стоял, однако я проблемы не вижу -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 3 Всего: 93 |
запись в область памяти, в которой располагается код - задача действительно тривиальная. вопрос о самомодификации тоже не стоял ;) я именно об осмысленной модификации говорил, а это - задача уже далеко не тривиальная. ну вот смотри, удалю я определение какой-нибудь переменной, которая сейчас(момент исполнения, в который решили модифицировать код) находится в области видимости. тогда в ещё не модифицированном образе нужно выполнить деструктор для удалённого объекта. а если деструктор бросит исключение? а как сбиндить старое состояние процесса на новой образ? я вижу одни проблемы... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
самомодификация - это всегда модификация, но не наоборот любое модифицирование - это в любом случае повторная генерация кода (как ты уже заметил в одном из постов) в результате получим исполняемый образ, допустим ELF образ далее сравниваем загруженный образ с только что полученным и сохраняем текущее состояние процесса (важен стек и глобальные данные) (в случае нехватки ОЗУ можно на худой конец диск использовать), причем при сохранении указываем информацию, которая будет необходима для того, чтобы заменить значения соответствующих данных на сохраненные при новом старте образа (при добавлении кода и данных адреса смещаются) далее запускаем новый процесс, который будет исполнять новый образ (формируем его адресное пространство, восстанавливая сохраненную информацию) важно отметить, что модифицирование возможно только еще невыполнявшегося кода, поскольку иначе нельзя Это сообщение отредактировал(а) MAKCim - 11.6.2007, 21:04 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Mayk |
|
||||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 5 Всего: 134 |
Два месяца назад я сдавал лабы на с++, которые были выполнены на winapi без всякого .net'а. При некрупных изменениях всё прекрасно работало.
Вообще поиск даёт положительный ответ на запрос «gdb "fix and continue"» Вот например
Так что основания полагать что gdb это теоретически может уметь есть. Дальнейшие следования по url'ам наводят на (правда это для darwin'а)
но такой команды мой gdb не понимает. ![]() -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||||
|
|||||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
видно был собран без
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
rvny |
|
|||
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 5.4.2007 Репутация: нет Всего: нет |
А ведь visual studio с 6ой версии кажется это умела делать? Т.е. с 1998 года у микрософт это было!
В 2003 с выходом net 1, 1.1 перестала работать (только переменные можно было смотреть). А в 2005 visual studio снова появилось break , modify, and continue Бывает ведь иногда нужно что-то подправить (В значениях переменных), либо дописать проверку, или изменить поведение внутри функции, но не естественно саму функцию (без изменения конечно передаваемых переменных). |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |