Points d'arrêt qui n'arrêtent pas

Pourquoi y a-t-il des points d’arrêt qui n’arrêtent pas ?
Dans cet exemple, je voulais m’arrêter à la ligne 299 ; le point d’arrêt ne fonctionnant pas, j’en ai rajouté 3.
Rien à faire, l’exécution s’arrête à 516.
J’ai fermé et rouvert la méthode ; sans effet…
image
Ce n’est pas nouveau et c’est imprévisible.

et si tu places ton point d’arrêt en ligne 300 ça ne fonctionne toujours pas ?

J’ai fait plein de tests, ce n’est qu’un exempel.
J’ai aussi redémarré.
C’est comme le Covid, ça revient tous les ans et c’est aléatoire … et pénible.

Je peux me tromper mais pour qu’un point d’arrêt fonctionne, il faut le placer sur une ligne non vide et qui possède une commande. A faire attention aussi au “au cas ou”, il faut placer le point d’arrêt sur le contenu pas sur la ligne de test ni sur la ligne de debut ou fin de boucle. Pas de point sur une ligne qui contient juste un commentaire non plus. Donc, il y a pleins de cas ou le point d’arrêt ne fonctionnera pas.

J’ai lancé la réparation de la base, je ne vois pas le rapport mais ça a fonctionné.
Les points d’arrêt arrêtent de nouveau ; je ne vois pas comment on peut développer sans cette fonction !
HTH

Effectivement, tu te trompes pour les lignes sans instruction : ça fonctionne.
Par contre, sur une fin de condition, ou sur une ligne de cas, ça ne fonctionne pas.

Effectivement, je viens de retester en v18.2 et les lignes vides, ou avec un commentaire, ou les débuts de condition ou les “sinon” semblent fonctionner avec les points d’arrêts ; seules les fins de boucle ou les lignes de conditions des “au cas ou” échappent aux points d’arrêt.

Mais, c’est bizarre, car comme toi, j’ai dû rencontrer des bugs aléatoires où le point d’arrêt ne fonctionnait pas pour avoir ce genre de supposition. :confused:

J’ai des pannes de 4D sur des fonctions assez basiques :

  • le cas des points d’arrêt évoqué ici
  • la mémorisation du contenu du débogueur qui est assez folklorique
  • l’interpréteur de l’éditeur de méthodes qui fonctionne de manière erratique ; comme la RATP, il déraille au ralenti !
    Heureusement, je n’ai jamais eu de problème avec les données enregistrées dans la base :slight_smile: :slight_smile:

As-tu néanmoins vérifié les propriétés de ces points d’arrêt qui te pose problème ?

Il se peut qu’elles soient erronées par défaut ou autre…

En maintenant la touche “alt” et en cliquant sur le point d’arrêt tu obtiens cette interface de conditions de fonctionnement du point d’arrêt.

Capture d’écran 2020-06-26 à 11.19.27

Ah oui ! J’ai jamais pris le temps de regarder ça de près mais le contenu du debogueur est jamais le même et j’ai pas du tout identifié comment ça fonctionnait !? Une fois que je saurai, je trouverai peut-être ça génial mais dans l’immédiat, c’est troublant et pas terrible :disappointed:

J’enregistre régulièrement l’état du débogueur et en général ça fonctionne.
De temps en temps, suite à un redémarrage ou à un plantage, il me ressort la situation -N du débogueur (càd de 1 à N enregistrements précédents : surprenant…
Ou alors en ouvrant un autre process.

Oui, c’est plutôt ça, j’ai l’impression d’avoir un état du débogueur par process. Ou quelque chose de ce genre…

Salut Eric,
pour ce que j’en ai compris, débogueur et points d’arrêt sont associés à la fois à l’utilisateur 4D (au sens Utilisateur courant) et au poste (sur lequel cet utilisateur s’excite à essayer de faire marcher son bordel). En 4D v17r4 64b client, je peux exclure que ce soit associé au process car, quel qu’il soit, points d’arrêt et zone d’expression sont conservés pendant la session quel que soit le process. Si je quitte/relance, la zone expression reste conservée mais les points d’arrêt sont perdus dans la stratosphère.

Une observation au sujet du menu du débogueur “clic droit/exécuter jusqu’au curseur” : j’ai la quasi certitude que cette commande place un “point d’arrêt temporaire invisible” - du moins ça se comporte exactement comme si.

assert(faux;"faites continuer avec alt enfoncée pour ignorer cette erreur")

Quand les points d’arrêts ne veulent pas de toi, c’est moins déprimant qu’un TRACE dans une boucle :joy:

PS
cas typique du point d’arrêt qui n’arrête jamais rien, le point d’arrêt placé par le client dans une méthode exécuter sur serveur : à l’exécution, il est absent du serveur (et n’arrête rien of course). Si par contre si je trace sur le serveur et que je place un point dans ce contexte, il sera opérationnel.

Assert(not(shift down)))

Est très utile dans de nombreux cas. Je pense au survol, au drag over, aux boucles…

Hello Vincent,
oui, j’utilise aussi. Sauf que chez moi c’est :
assert(touche enfoncée+non développeur)
rapport à : “j’oublie de nettoyer mon bazar” + déploiement en interprété :rofl:

Assert est vraiment un bel outil de programmation, quand j’entends “assert à rien” ça me fiche le moral en l’air.

1 Like