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

Поиск:

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


Новичок



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

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



Здравствуйте!
Есть ли среды разработки в линуксе или возможности подобные microsoft visual studio:
Т.е. в режиме отладки не только смотреть и изменять переменные, но и добавлять код/удалять код/модифицировать и в дальнешем пошагово продолжать отлаживать программу (с изменным кодом)  без повторной остановки программа и запуска с перекомпиляцией.
Или в линуксе к сожалению только для просмотра значений можно использовать kdevelp, qdevelop в режиме отладки?
PM MAIL   Вверх
bsa
Дата 9.6.2007, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



На сколько мне известно, под Linux не существует средств (по крайней мере бесплатных), позволяющих модифицировать код во время отладки и автоматически его подцеплять.
KDevelop, Code::Blocks и др. позволяют просматривать значения переменных. Не удивлюсь, если и изменять, но я этим никогда не пользовался (или просто забыл).
PM   Вверх
GrayCardinal
Дата 10.6.2007, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

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



rvny
Странно. А какой смысл в модифицировании кода во время выполнения ? Может проще поставить пару assert'ов ?

Это сообщение отредактировал(а) GrayCardinal - 10.6.2007, 04:06


--------------------
PM MAIL WWW   Вверх
powerfox
Дата 10.6.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

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



rvny, kdbg. Но сомневаюсь, что такая возможность там есть (в доках не видел).


--------------------
user posted image
PM WWW   Вверх
archimed7592
Дата 10.6.2007, 13:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
Mayk
Дата 11.6.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(archimed7592 @  10.6.2007,  17:55 Найти цитируемый пост)
вообще то возможности студии "на лету" модифицировать код во время отладки к с++ отношения не имеет - это привилегия .net кода. при модификации unmanaged с++ кода, AFAIK, студия просит пересборку проекта. 

Incremental link действительно имеет отношение к с++ не более чем к фортрану.  В конце концов .exeшники собирают linker'ы.
VS вполне сносно позволяет модифицировать немного umanaged кода в рантайме. 


Цитата(rvny @  9.6.2007,  03:43 Найти цитируемый пост)

Т.е. в режиме отладки не только смотреть и изменять переменные, но и добавлять код/удалять код/модифицировать и в дальнешем пошагово продолжать отлаживать программу (с изменным кодом)  без повторной остановки программа и запуска с перекомпиляцией.



Поиск в гугле говорит, что в природе есть
Цитата(http://docs.sun.com/source/806-3567/ild.html)

ild is an incremental version of the Link Editor ld, and replaces ld for linking programs. Use ild to complete the edit, compile, link, and debug loop efficiently and more quickly. You can avoid relinking entirely by using the fix and continue feature of dbx which allows you to work without relinking. However, if you need to relink, the process can be faster if you use ild. For more information on fix and continue, see Chapter 11 in Debugging a Program With dbx.


Из док-ии по названному dbx
Цитата(далее по ссылке)

The advantages of using fix and continue are:
--8<--
    * You can resume running the program from the fix location. 


Поиск по ключевым словам "    sun    studio    linux    fix    continue " даёт

Цитата(даю ссылку на гугл @  так как прямая ссылка просит регистрацию)


Sun Studio 9 for Solaris OS and Linux
Significant Improvements in SPARC, Xeon and AMD Performance


Immediate availability of the Linux version of SunTM Studio 9 development tools for C, C++ and Fortran was announced by Sun at the LinuxWorld Conference held in San Francisco.

Also available for the SolarisTM Operating System (Solaris OS), Sun Studio 9 provides a comprehensive, productive environment for developing scalable 32-bit and 64-bit applications on the latest Sun UltraSPARCR IV, Intel Xeon and AMD-based systems.

For the Linux environment, this software offers NetBeansTM-based IDE with editor of choice (Vim, XEmacs, built-in); distributed make (dmake); GUI debugger (dbx) for GCC binaries; performance tools and X-Designer GUI Builder. 
....
Simplified Debugging: Graphical user interface allows for easy access to advanced debugging features. Set breakpoints, examine variables and navigate the call stack through debugger menus and buttons. Reduce turnaround time for fixes and achieve greater debugging productivity with "Fix and Continue." Debug optimized and parallelized code as well as mixed languages (C, C++, Fortran, and Java).

Так что есть основания полагать что fix'n'continue в linux мире существует.

Про другие IDE  и более свежие версии sun studio искать лень.


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


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Mayk, точно технологию не знаю, но, вроде как "онлайн" модификация исходника реализуется посредством рефлексии, которую поддерживает .net, но не поддерживает c++(не дай Б-г такое счастье smile)


--------------------
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
PM Jabber   Вверх
MAKCim
Дата 11.6.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



вообще говоря модифицирование кода задача тривиальная
не может быть, чтобы в GDB этой операции не было


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

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


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
MAKCim
Дата 11.6.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



archimed7592
Код

#include <sys/mman.h>
#include <stdio.h>

static int foo() {
    return 0;
}

int main() {
    mprotect((void*)(&foo - (int)&foo % 4096), 4096, PROT_READ | PROT_WRITE | PROT_EXEC;
    ++*((int*)&foo + 1);
    printf("%d\n", foo());
    return 0;
}

как?  smile (компилировать без оптимизации gcc <name>.c -o <name>)

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


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

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


Вселенский отказник
****


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

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



 smile 

Цитата

++*((int*)&foo
 спасибо, а вот монитор оттирать мне придется =\


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 11.6.2007, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



nerezus
 smile 


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

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


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
MAKCim
Дата 11.6.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(archimed7592 @  11.6.2007,  20:14 Найти цитируемый пост)
или это пример как модифицировать?

да
Цитата(archimed7592 @  11.6.2007,  20:14 Найти цитируемый пост)
дык речь о том, что среда сама интерактивно перекомпилирует, пересобирает и каким-то макаром биндит срарое состояние программы на новый образ. проблема в том, что в с++ очень много ньюансов со стеком, с исключениями и тому подобных граблей. если задача и выполнима, то уж точно она не тривиальна. 

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


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

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


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

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



Цитата(MAKCim @  11.6.2007,  20:26 Найти цитируемый пост)
модифицирование кода - действительно тривиальная задача, и я это показал

запись в область памяти, в которой располагается код - задача действительно тривиальная.

Цитата(MAKCim @  11.6.2007,  20:26 Найти цитируемый пост)
вопрос о том, как это использовать, не стоял

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

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


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

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

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


 




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


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

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