Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

compilateur graphique gratuit avec debugeur ?

42 réponses
Avatar
MB
Bonjour

J'uilise Bloodshed Dev-C++ 4.9.9.2 pour mon petit programme en C qui doit
ensuite tourner sur un serveur NT4. J'ai déjà mis en production sur mon
serveur NT4 une première version de mon programme en C il y a maitenant
plusieurs mois et il tourne bien.

Le problème c'est que je veux faire évoluer mon programme et le debugueur
pas à pas marche mais quand il veut !! .

Il n'y a pas une option pour lui dire de mieux fonctionner sous XP ou un
autre compilateur pas pas capable de faire le même job ?

Merci

10 réponses

1 2 3 4 5
Avatar
Charlie Gordon
"Harpo" wrote in message
news:439737ee$0$21297$
Emmanuel Delahaye wrote:


Je ne sais pas ce que c'est 'mingw'.


Minimalist Gcc for Windows. T'as cassé ton Google, vilain garçon ?

La question n'est pas là, elle fonctionnent bien en principe. Chqrlie
vilipende strcat(), mais a priori elles font ce que dit le manuel.
Le problème c'est qu'elles portent sur de strings terminés par 0,
elles travaillent sur des char et font des copy etc. char par char,
ce qui coute cher.


Le problème n'est pas dans les fonctions, mais dans la choix qui a été
fait d'implémenter les chaines avec une sentinelle.


Je suis tout à fait d'accord sur ce point, c'est ce que je viens
d'écrire.
Mais il y a aussi le choix des fonctions, dans ce choix
d'implémentation, certaines fonctions s'imposent comme strc[n]py,
str[n]cat (au risque d'aggraver l'ulcère de Chqrlie), mais si on
cherche un peu plus sophistiqué, on trouve souvent des fonctions qui
répondrait presque au besoin mais qui en fait n'y répondent pas, comme
strtok, strspn (une gourmande aussi celle-là) etc.
Cela me semble typique d'une implémentation qui a précédé la conception.
Je ne jete pas la pierre, il y a aussi des impératifs comme la
deadline, le problème c'est que 1/4 de siècle après, il n'y a pas dans
le langage de substitut aux null terminated strings et que les
fonctions absconses str* tiennent le haut du pavé tout en étant plutôt
inutiles.


Soyons clairs, Je n'ai pas d'ulcère, ni même de vésicule biliaire ;-)
Je ne vilipende pas strcat mais strncat, strncpy et strtok, et quelques autres
encore...
Elles font certes ce que dit le manuel, mais rares sont ceux qui lisent le
manuel car il croient déjà savoir, et plus rares encore sont ceux qui
comprennent ce que dit vraiment le manuel à leur sujet.
Quant à la lib C, elle a au fil des normalisations pris un embonpoint conséquent
et souvent discutable, mais reste désespérément loin du minimum nécessaire pour
les taches courantes, en particulier des programmeurs débutants. scanf en
particulier est une horreur absolue : il est toujours aussi facile de piéger un
débutant sur des problèmes simples d'entrées sorties, qu'il est d'ailleurs
souvent difficile de régler correctement et efficacement. Le fait que les
chaines soient implémentées avec une sentinelle n'est pas bien grave en regard
de ces lacunes.

--
Chqrlie.

Le C c'est un peu comme la démocratie : c'est le pire des langages, à
l'exception de tous les autres.



Avatar
Charlie Gordon
"Harpo" wrote in message
news:439737ee$0$21297$
Emmanuel Delahaye wrote:
La question n'est pas là, elle fonctionnent bien en principe. Chqrlie
vilipende strcat(), mais a priori elles font ce que dit le manuel.
Le problème c'est qu'elles portent sur de strings terminés par 0,
elles travaillent sur des char et font des copy etc. char par char,
ce qui coute cher.


Le problème n'est pas dans les fonctions, mais dans la choix qui a été
fait d'implémenter les chaines avec une sentinelle.


Je suis tout à fait d'accord sur ce point, c'est ce que je viens
d'écrire.
Mais il y a aussi le choix des fonctions, dans ce choix
d'implémentation, certaines fonctions s'imposent comme strc[n]py,
str[n]cat (au risque d'aggraver l'ulcère de Chqrlie), mais si on
cherche un peu plus sophistiqué, on trouve souvent des fonctions qui
répondrait presque au besoin mais qui en fait n'y répondent pas, comme
strtok, strspn (une gourmande aussi celle-là) etc.
Cela me semble typique d'une implémentation qui a précédé la conception.
Je ne jete pas la pierre, il y a aussi des impératifs comme la
deadline, le problème c'est que 1/4 de siècle après, il n'y a pas dans
le langage de substitut aux null terminated strings et que les
fonctions absconses str* tiennent le haut du pavé tout en étant plutôt
inutiles.


Soyons clairs, Je n'ai pas d'ulcère, ni même de vésicule biliaire ;-)
Je ne vilipende pas strcat mais strncat, strncpy et strtok, et quelques autres
encore...
Elles font certes ce que dit le manuel, mais rares sont ceux qui lisent le
manuel car il croient déjà savoir, et plus rares encore sont ceux qui
comprennent ce que dit vraiment le manuel à leur sujet.
Quant à la lib C, elle a au fil des normalisations pris un embonpoint conséquent
et souvent discutable, mais reste désespérément loin du minimum nécessaire pour
les taches courantes, en particulier des programmeurs débutants. scanf en
particulier est une horreur absolue : il est toujours aussi facile de piéger un
débutant sur des problèmes simples d'entrées sorties, qu'il est d'ailleurs
souvent difficile de régler correctement et efficacement. Le fait que les
chaines soient implémentées avec une sentinelle n'est pas bien grave en regard
de ces lacunes.

--
Chqrlie.

Le C c'est un peu comme la démocratie : c'est le pire des langages, à
l'exception de tous les autres.



Avatar
Jean-Marc Bourguet
Harpo writes:

Jean-Marc Bourguet wrote:

L'important, c'est que la doc permet de savoir quelles sont les
proprietes qui sont desirees, celles qui sont le fruit du hasard,
celles qui sont des bugs et seront supprimees des que le responsable
du code s'en rendra compte.


Au fait, les tests faits en connaissant l'implementation ne permettent
pas de discerner les deux premiers cas mais on peut esperer que le
troisieme ne s'y trouve pas :-)


Si tu savais combien il est difficile de faire des test suite qui
évitent de dévoiler des bugs !


Je le sais trop bien. Un de mes problemes en la matiere est de faire
des tests qui testent mon code mais pas celui des autres...

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org



Avatar
Harpo
Jean-Marc Bourguet wrote:

Je le sais trop bien. Un de mes problemes en la matiere est de faire
des tests qui testent mon code mais pas celui des autres...


Il se trouve qu'on a besoin du code des autres et il faut faire avec ses
défaut, c'est la vie...
Quand le code des autres est développé en parallèle, il contient une
quantité non négligeable de bugs et/ou de variations dans les résultats
et on ne peut pas toujours developper d'abord les fonctions (ou autre
briques logicielles) feuilles puis remonter lorsquelles sont réputées
bien debuggées, cela créerait des attentes insoutenables de process (je
veux dire de développeurs).

Une solution est de remplacer les fonctions appelées par des fonctions à
peu près vides qui renvoient un résultat correspondant à ce qu'on
attend. Ce n'est pas toujours facile surtout lorsque ces fonctions ont
des effets de bord et cela demande du temps mais parfois ça en fait
gagner aussi.
Il faut se résoudre à continuer à développer en laissant des parties de
code sommairement testées et de subir les interférences avec du code du
même genre. ce n'est que petit à petit que sous ce flou artistique se
dessine quelque chose qui semble tourner, et c'est là que commencent
les tests...

Avatar
Harpo
Charlie Gordon wrote:

Elles font certes ce que dit le manuel, mais rares sont ceux qui
lisent le manuel car il croient déjà savoir, et plus rares encore sont
ceux qui comprennent ce que dit vraiment le manuel à leur sujet.


Sans doute, mais ce n'est pas un défaut inhérent aux fonctions.

Quant à la lib C, elle a au fil des normalisations pris un embonpoint
conséquent et souvent discutable, mais reste désespérément loin du
minimum nécessaire pour
les taches courantes, en particulier des programmeurs débutants.


Il est toujours possible de développer des lib mieux construites, et
cela a déjà été fait, mais l'inconvénient est leur prolifération et le
fait qu'aucune ne peut dire être un standard même de fait.
La prolifération de ces libs est justement un résultat des lacunes et
des approximations fonctionnelles de la libc.

scanf en particulier est une horreur absolue :


J'ai utilisé très très rarement et jamais sans qu'il ne me reste un
doute sur la validité du code. Je ne comprends pas qu'on apprenne des
trucs pareils à des débutants.

il est toujours aussi
facile de piéger un débutant sur des problèmes simples d'entrées
sorties, qu'il est d'ailleurs
souvent difficile de régler correctement et efficacement. Le fait que
les chaines soient implémentées avec une sentinelle n'est pas bien
grave en regard de ces lacunes.


Je ne suis pas vraiment d'accord. Des fonctions comme strcat/strncat
sont des ogres pour le CPU, surtout si on les utilise inconsidérément
après les avoir fait précèder de strlen[s] pour allouer la taille
nécessaire.

Avatar
Eric Deveaud
Harpo wrote:
Eric Deveaud wrote:

Harpo wrote:

La manière d'agrandir pourrait aussi être parametrable, multiplier
la taille par 2 n'est pas toujours la meilleure stratégie, à partir
d'un moment il faut tenir compte de la taille de la page.


pourrais-tu détailler stp, c'est un problème auquel je suis osuvent
confronté


il est peut-être préférable de se
contenter de quelques règles simples tenant compte du système sur
lequel le programme doit tourner le plus souvent et faire en sorte que
ça marche partout.
~~~~~~~~~~~~~~~~~


c'est justement un de mes objectifs. enfin partout partout, c'est vite dit, sur
n'importe quel *n*ix
mes codes doivent tourner sur *BSD, Tru64, Solaris, Linux, MacOSX.
ce qui fait que j'essaye de rester le plus standard possible


Il y a toujours une espèce de marchandage entre la place utilisée, le
temps utilisé, ce qui complique c'est qu'au nivau global de la machine,
c'est lié, on ne peut pas faire varier ces parametres indépendamment et
le profiling d'un programme n'apprend pas grand chose quand au débit
d'une machine.


voui

ce n'est pas important sur une machine de bureau qui
passe son temps dans une idle loop et qui ne travaille vraiment que
lorsqu'on clique,


tout dépend de la machine de bureau et de ce que fait le gus sur la chaise ;-)

c'est plus important pour une machine sur laquelle
sont implantés des serveurs sollicités.


destination de ce que j'écris à vrai dire.


Les règles simples de bon sens commun que j'utilise sont :
. éviter de faire des malloc(), préférer alloca() quand c'est possible.


pas possible pour les raisons suivantes
BUGS
The alloca function is machine and compiler dependent. On many systems
its implementation is buggy. Its use is discouraged.

RESTRICTIONS

Because the alloca() function requires inclusion of <alloca.h> in order to
work correctly, this function is not portable.

~~~~ ça on peut tourner autour ~~~~~~~~



Merci

Eric
--
Je voudrais savoir s'il existe un compteur de vitesse (?) pour savoir
à quelle vitesse on est réellement connecté au FAI et surtout si une
telle bête existe... où la trouver.
-+- RJ in: Guide du Neuneu d'Usenet - Baisse la tête et pédale -+-



Avatar
Jean-Marc Bourguet
Harpo writes:

Jean-Marc Bourguet wrote:

Je le sais trop bien. Un de mes problemes en la matiere est de
faire des tests qui testent mon code mais pas celui des autres...


Il se trouve qu'on a besoin du code des autres et il faut faire avec
ses défaut, c'est la vie...


J'ai ecris que c'est un de mes problemes, j'aurais peut-etre mieux
fait d'ecrire une de mes preoccupations quand j'ecris des tests. Cela
fait longtemps que je travaille sur des gros projets, a multiple
equipes, gros historique, gros clients, plus proche de 20000 fichiers
sources que de 20000 lignes (j'ai compte une fois les fichiers .cpp,
.c et lisp auxquels j'avais acces sans me demener outre mesure, je
suis arrive a 13000 -- donc pour un code incomplet sans les en-tetes,
sans les autres langages, on a au minimum encore un peu de Fortran et
de Java). Je deviens chaque jour meilleur a eliminer les sources
d'instabilites dans mes tests (c'est bizarre, c'est toujours les memes
equipes qui introduisent de l'instabillite; parfois c'est lie a la
nature de ce qu'ils font, parfois lie a la nature des gens et de leur
management direct :-()

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
Harpo
Eric Deveaud wrote:


Les règles simples de bon sens commun que j'utilise sont :
. éviter de faire des malloc(), préférer alloca() quand c'est
possible.


pas possible pour les raisons suivantes
BUGS
The alloca function is machine and compiler dependent. On many
systems its implementation is buggy. Its use is discouraged.
e

Et bien, il ne faut pas l'utiliser sur lesquelles elle est buggée; c'est
quou votre problème ?

RESTRICTIONS

Because the alloca() function requires inclusion of <alloca.h> in
order to work correctly, this function is not portable.


Vous avez déjè entendu parler de configuration de logiciel ou c'est un
troll ?


Avatar
Harpo
Jean-Marc Bourguet wrote:

Harpo writes:

Jean-Marc Bourguet wrote:

Je le sais trop bien. Un de mes problemes en la matiere est de
faire des tests qui testent mon code mais pas celui des autres...


Il se trouve qu'on a besoin du code des autres et il faut faire avec
ses défaut, c'est la vie...


J'ai ecris que c'est un de mes problemes, j'aurais peut-etre mieux
fait d'ecrire une de mes preoccupations quand j'ecris des tests. Cela
fait longtemps que je travaille sur des gros projets, a multiple
equipes, gros historique, gros clients, plus proche de 20000 fichiers
sources que de 20000 lignes (j'ai compte une fois les fichiers .cpp,
.c et lisp auxquels j'avais acces sans me demener outre mesure, je
suis arrive a 13000 -- donc pour un code incomplet sans les en-tetes,
sans les autres langages, on a au minimum encore un peu de Fortran et
de Java). Je deviens chaque jour meilleur a eliminer les sources
d'instabilites dans mes tests (c'est bizarre, c'est toujours les memes
equipes qui introduisent de l'instabillite; parfois c'est lie a la
nature de ce qu'ils font, parfois lie a la nature des gens et de leur
management direct :-()


Pour supprimer les sources d'instabilité, le mieux est de supprimer les
équipes qui en sont la cause, pour supprimer ces équipes le plus simple
est de supprimer ses membres, il se trouve qu'en ce moment nous avons
un lot de kalachnikov en excellent état de marche (de nombreuses
attestations secrètes de nos clients le prouvent). Vous pouvez les
louer en laissant un dépot de garantie. nous faisons aussi les balles
blindées spécial hacker et pouvons assurer une assistance technique
pour un léger surcoût. les munitions sont tarifiées à part mais les
douilles ne sont pas consignées.
Nous faisons aussi des tarifs de gros pour les mainframes et les équipes
obsoletes qui y sont attachées.



Avatar
Charlie Gordon
"Harpo" wrote in message
news:439956ff$0$20139$
Charlie Gordon wrote:

Elles font certes ce que dit le manuel, mais rares sont ceux qui
lisent le manuel car il croient déjà savoir, et plus rares encore sont
ceux qui comprennent ce que dit vraiment le manuel à leur sujet.


Sans doute, mais ce n'est pas un défaut inhérent aux fonctions.


On peut pouer sur les mots, mais c'est indéniablement un défaut de sémantique.
strncpy ne fait pas ce que le commun des mortels croit comprendre, intuitivement
ou en lisant la doc, et cela est dû à une sémantique improbable, d'un intérêt
pratiquement nul, qui n'aurait jamais dû faire partie de la norme. Un accident
de l'histoire.

Quant à la lib C, elle a au fil des normalisations pris un embonpoint
conséquent et souvent discutable, mais reste désespérément loin du
minimum nécessaire pour
les taches courantes, en particulier des programmeurs débutants.


Il est toujours possible de développer des lib mieux construites, et
cela a déjà été fait, mais l'inconvénient est leur prolifération et le
fait qu'aucune ne peut dire être un standard même de fait.
La prolifération de ces libs est justement un résultat des lacunes et
des approximations fonctionnelles de la libc.


Je suis bien d'accord, mais la raison en est que le comité de normalisation
encule les mouches au lieu d'étendre la librairie dans le sens de la définition
et normalisation de fonctions d'interface utiles.

scanf en particulier est une horreur absolue :


J'ai utilisé très très rarement et jamais sans qu'il ne me reste un
doute sur la validité du code. Je ne comprends pas qu'on apprenne des
trucs pareils à des débutants.


Pareil ! mais que dire au débutant qui doit faire un programme qui doit "lire"
un nom et des prix pour faire un petit calcul et éditer un ticket ?

il est toujours aussi
facile de piéger un débutant sur des problèmes simples d'entrées
sorties, qu'il est d'ailleurs
souvent difficile de régler correctement et efficacement. Le fait que
les chaines soient implémentées avec une sentinelle n'est pas bien
grave en regard de ces lacunes.


Je ne suis pas vraiment d'accord. Des fonctions comme strcat/strncat
sont des ogres pour le CPU, surtout si on les utilise inconsidérément
après les avoir fait précèder de strlen[s] pour allouer la taille
nécessaire.


Tu es un peu extrême : en informatique, pour accéder au niveau ogre, il faut un
niveau d'inefficacité qui se compte en milliers... mais nombreux sont ceux qui
qualifient. strcat n'est pas dans cette catégorie, elle est juste inefficace
(facteur 2 ou 3) mais simple et cette caractéristique est plus importante pour
les nombreuses occurrences où la performance n'est pas si critique. Garde un
peu de marge dans le vocabulaire pour les véritables scandales...

--
Chqrlie.


1 2 3 4 5