OVH Cloud OVH Cloud

Compiler en cours d'execution

8 réponses
Avatar
Remi Moyen
Salut,

J'aimerais savoir si il existe sous Linux un moyen de reproduire une
fonctionnalité de Visual C++ que je trouve bien pratique :

Sous Visual, il est possible de modifier le code source d'un programme en
cours d'execution, de recompiler le code et de continuer à executer le
nouveau code, de manière à peu près transparente. Évidemment, ça ne marche
pas pour toutes les modifications, mais typiquement, quand on a fait une
bête faute de frappe (inverser deux index, oublier un +1, ...), ça marche
assez bien.

Comme je travaille sur un assez gros projet, où le programme est long à
lancer, et les données longues à charger aussi, ce genre de trucs
m'aiderait beaucoup. Enfin, c'est pour le confort surtout, mais c'est un
petit plus fort agréable.

Je me demande donc si il existe un équivalent de cette fonctionnalité sous
Linux. Soit avec des bidouilles en lignes de commande pour forcer à
recharger une bibliothèque et/ou un executable (je me debrouillerais pour
scripter tout ça et l'intégrer dans mes Makefile après), soit intégré dans
un IDE.

Merci !
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."

8 réponses

Avatar
Michel SIMIAN
Remi Moyen wrote:
Salut,

[snip texte]


la fonctionnalité dont tu parles existe sous
Visual, soit un environnement de dev. Cela
n'a rien à voir avec Linux.
Et ta question serait préférable sur fr.comp.developpement.

Sinon, cherche au niveau des EDI de dev.

Et, de plus, je crois que ddd sait faire cela.

--
L'Amer Michel

Avatar
Remi Moyen
On Mon, 12 Jan 2004, Michel SIMIAN wrote:

Remi Moyen wrote:
Salut,

[snip texte]


la fonctionnalité dont tu parles existe sous
Visual, soit un environnement de dev. Cela
n'a rien à voir avec Linux.


Ben si. Parce que, si tu avais bien lu, tu aurais compris que je connais
cette fonctionnalité de Visual et que, justement, j'aimerais en trouver un
equivalent sous Linux. Ça ne concerne donc pas Visual, et bien Linux.

Et ta question serait préférable sur fr.comp.developpement.


C'est pas faux. Je vais la reposer là-bas dès que j'aurais deux minutes.

Et, de plus, je crois que ddd sait faire cela.


Ah, voilà qui est plus intéressant comme réponse ! Je vais regarder ça de
plus près.

Merci !
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."


Avatar
Remi Moyen
On Mon, 12 Jan 2004, Remi Moyen wrote:

Et, de plus, je crois que ddd sait faire cela.


Ah, voilà qui est plus intéressant comme réponse ! Je vais regarder ça de
plus près.


Après avoir regardé, aussi bien dans le man que en pratiquant, je n'ai pas
l'impression que ça soit ça. Depuis ddd, je peux modifier le code source,
et le recompiler, mais l'executable chargé en mémoire ne change pas. Et
si je re-selectionne l'executable à débugguer, ça interrompt l'execution.

Il y a juste l'option "writing into executable and core files" dont je ne
comprends pas vraiment l'utilité (et la doc est très laconique là-dessus),
mais en tout cas elle ne semble pas produire le résultat que je veux.
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."


Avatar
Christophe Delage
Salut,

Remi Moyen wrote:

J'aimerais savoir si il existe sous Linux un moyen de reproduire une
fonctionnalité de Visual C++ que je trouve bien pratique :


A moins que je ne me trompe lourdement, ca n'a rien a voir avec visual,
ou un IDE, ou un compilo. C'est une affaire d'OS.

Sous Visual, il est possible de modifier le code source d'un programme en
cours d'execution, de recompiler le code et de continuer à executer le
nouveau code, de manière à peu près transparente. Évidemment, ça ne marche
pas pour toutes les modifications, mais typiquement, quand on a fait une
bête faute de frappe (inverser deux index, oublier un +1, ...), ça marche
assez bien.


Si je te dis que linux charge les pages de code en mode "copy on
write" alors que windows (et Solaris. par exemple), non, tu vois de
quoi je parle ?
En gros, ca veut dire qu'il n'y a aucune chance que ce truc marche
sous linux, et (mais la c'est une opinion personnelle) que c'est une
bonne chose.

christ

--
question = to ? be : ! be;
-- W. Shakespeare

Avatar
Remi Moyen
On Wed, 14 Jan 2004, Christophe Delage wrote:

J'aimerais savoir si il existe sous Linux un moyen de reproduire une
fonctionnalité de Visual C++ que je trouve bien pratique :


A moins que je ne me trompe lourdement, ca n'a rien a voir avec visual,
ou un IDE, ou un compilo. C'est une affaire d'OS.


Ah ?

Si je te dis que linux charge les pages de code en mode "copy on
write" alors que windows (et Solaris. par exemple), non, tu vois de
quoi je parle ?


Hum, vaguement, oui. Je n'y avais pas pensé... Bon, ben mes recherches
s'arrêtent là, alors.

J'aurais bien aimé, mais tant pis...
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."


Avatar
Remi Moyen
On Wed, 14 Jan 2004, Remi Moyen wrote:

Si je te dis que linux charge les pages de code en mode "copy on
write" alors que windows (et Solaris. par exemple), non, tu vois de
quoi je parle ?


Hum, vaguement, oui.


En voulant rafraichir mes connaissances là-dessus, je suis tombé sur cette
page :
http://msdn.microsoft.com/library/en-us/memory/base/memory_protection.asp
qui indique que windows aussi utilise du copy on write. Et pourtant, il se
debrouille bien pour faire de l'edit-and-continue (je sais pas comment
par contre... là, j'ai pas trop d'idée, sauf à ce que VC aille interférer
avec le noyau de windows !!) !
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."


Avatar
Christophe Delage
Remi Moyen wrote:

On Wed, 14 Jan 2004, Christophe Delage wrote:
Si je te dis que linux charge les pages de code en mode "copy on
write" alors que windows (et Solaris. par exemple), non, tu vois de
quoi je parle ?


Hum, vaguement, oui. Je n'y avais pas pensé... Bon, ben mes recherches
s'arrêtent là, alors.

J'aurais bien aimé, mais tant pis...


Bah, depuis que ma mere m'a raconte comment se passait leur projets de
programmation quand elle etait etudiante(*), j'ai arrete de me
plaindre pour quelques minutes ;-)

christ

(*) etape 1: ecrire le programme en assembleur sur papier
etape 2: verifier/corriger le programme en assembleur sur papier
etape 3: re-verifier/corriger le programme en assembleur sur papier
etape 4: mettre le programme sur cartes perforees (avec son petit
poincon).
etape 5: donner ca au chef qui les mettra dans la camionette.
etape 6: attendre que la camionette revienne de l'autre bout
de la ville, la ou se trouve l'Ordinateur.
etape 7: constater que le listing rapporte par la camionette dit
"syntax error at line 42"
recommencer a l'etape 2 (voire a l'etape 1).

Sachant que la camionette fait deux aller-retour par jour ouvrable.

--
Et quand je fais cat /dev/random > /dev/audio, l'auteur de /dev/random
il touche des sous de la SACEM ?
-+- JFB in GFA : "SACEM le vent et rcolte le pognon" -+-


Avatar
Remi Moyen
On Wed, 14 Jan 2004, Christophe Delage wrote:

Bah, depuis que ma mere m'a raconte comment se passait leur projets de
programmation quand elle etait etudiante(*), j'ai arrete de me
plaindre pour quelques minutes ;-)


Je sais, mon père en faisait parait-il autant. Avec en plus l'étape
"laisser tomber les cartes perforées par terre et les mélanger".

Mais bon, c'est pas parce que mes ancêtres chassaient eux-même le mammouth
que je ne dois pas y aller, au mammouth, pour acheter ma viande toute
prête !

Sachant que la camionette fait deux aller-retour par jour ouvrable.


Et que les crénaux horaires disponibles pour ton code, de toute façon,
c'est après-demain entre 2h et 2h10 du matin...
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."