Existe-t-il des astuces pour déboguer une application Jmp ?
Je suppose que la manière par défaut de le faire est quelque chose comme :
Utilisez le débogueur Jmp, ajoutez des points d'arrêt, laissez le code de l'application s'exécuter et s'arrêter au point d'arrêt, puis vérifiez ce qui se passe étape par étape...
Lorsque je dois déboguer du code JSL non-application, j'aime avoir la liberté d'exécuter n'importe quel code dans le script à tout moment.
Par exemple, supprimez le paramètre modal d'une fenêtre de rapport, créez la fenêtre de rapport, puis exécutez quelques lignes de code qui se trouvent à une autre position dans le fichier jsl.
Est-ce également possible avec les applications d'Application Builder ?
1) Comment activer le journal intégré dans Application Builder ?

2) Pour déboguer les applications générées manuellement, j'ai trouvé
myApp = JMP App();
(myApp << Get Namespace) << Show Contents;
Lors de l'exécution d'une application à partir d'Application Builder, je n'ai pas de poignée monApp que je peux utiliser pour parler à l'application.
Existe-t-il une commande pour obtenir l'espace de noms de l'application actuelle et "infiltrer" le code :
((current report() << get App() ) << get Namespace()) << include Namespace in HERE
de telle sorte que je puisse copier des extraits de code de l'application et les exécuter directement dans une fenêtre de script - avec un accès direct à l'espace de noms de l'application en cours d'exécution ?
3) Si je fais des erreurs dans mon code JSL, JSL edotor m'avertira ou affichera un message d'erreur qui m'aidera à trouver l'erreur et à la corriger.
Si j'ouvre le script source d'une application et que je fais une petite erreur, Jmp plantera lorsque j'exécuterai le code avec << modifier ou << courir
Y a-t-il une chance de changer le code source avec moins de pénalités pour mes points de pénalité ? Existe-t-il une routine de pré-vérification que je peux utiliser avant d'oser exécuter le script ?
En fait, c'est la même chose pour les scripts inclus - existe-t-il une possibilité d'exécuter manuellement du code dans le script inclus - avec accès à l'espace de noms HERE du script principal ?
scénario principal :
Names Default to HERE(1);
::myNamespace = localHERE(); //*)
temp =5;
include ("script_inc.jsl");script inclus :
///////////////////////////
// to be able to manually execute code in this file, which accesses variables of the main file,
// you need direct access to the namespace of the main file. To get this access, execute:
///////////////////////////
access Namespace(::myNamespace) // *)
Show(temp);
*) (évidemment) ça ne marche pas
Cette capture d'écran montre le "problème" : lorsqu'il est inclus dans le script principal, script_B connaît les variables du Ici Espace de noms du script principal (log de la fenêtre de gauche).
Mais exécuté séparément, script_B a son propre Ici espace de noms.
C'est comme conçu :
Scripts essentiels pour l'efficacité et la reproductibilité : faire moins pour en faire plus (2019-US-TUT-290)
... mais cela rend impossible l'exécution de lignes simples directement à partir de script_B pour le débogage.
-> Comment puis-je lier les espaces de noms pour me permettre de déboguer script_B .