5 motivi per cui amo il nuovo debugger JSLProprio così, JMP 10 viene fornito con un nuovo debugger JSL. Dì addio al vecchio e ciao al nuovo! Mentre mi chiedevo cosa potessi dire in un post sul blog, ho iniziato a pensare a come rendere la mia vita come uno script JSL più facile. Questo post presenta alcune funzioni meravigliose e i post successivi ingrandiranno i dettagli.
La JSL Scripting Guide ha una descrizione completa di JSL Debugger, insieme ad alcuni semplici esempi per iniziare. Nel frattempo, ecco alcune cose a cui guardare.
5. Funziona!
Potrebbe essere un po 'duro, ma ho trovato il nostro precedente debugger JSL così limitato nelle funzionalità e doloroso da usare, non l'ho mai usato. Ora mi ritrovo ad abbandonare le mie vecchie abitudini di cospargere liberamente il mio codice con Show () s, Print () s e Write () s, e invece mi rivolgo al nuovo debugger. Il che ha il vantaggio di non rilasciare il mio script ai colleghi solo per scoprire che ho dimenticato di commentare o eliminare diversi Show ().
Come bonus aggiuntivo, non devi aggiungere / * debug passo * / all'inizio del tuo script per eseguire il debug. È possibile fare clic sul pulsante della barra degli strumenti Debug Script (
) per il tuo script - è proprio accanto al pulsante Esegui script. Oppure seleziona Modifica> Script di debug. Oppure fare clic con il tasto destro nella finestra dello script e selezionare Debug Script. O premere CONTROL-SHIFT-R (COMMAND-SHIFT-R su Macintosh). Facile!
4. È disponibile su Macintosh, anche

Oh giorno felice! Ora posso eseguire il debug degli script JSL su Macintosh e Windows! Il debugger è lo stesso su entrambe le piattaforme. Stesse grandi caratteristiche, stessa grande funzionalità. So che i miei amici Macintosh apprezzeranno questo, dal momento che il vecchio debugger stanco non era nemmeno disponibile su Macintosh.
3. Debug di loop e funzioni scritte dall'utente
I giorni in cui hai selezionato piccoli pezzi di codice nei tuoi loop e li hai eseguiti frammentari (mentre cercavi di non selezionare la virgola che ha provocato un errore JSL) sono finiti. Posso sentire gli applausi da qui. Mentre si esegue il codice tramite il debugger, è possibile visualizzare il valore della variabile di iterazione aggiornata automaticamente ogni volta che cambia. Puoi utilizzare i punti di interruzione per bypassare i blocchi che sai funzionare. È possibile aggiungere una condizione a un punto di interruzione ed eseguire le prime 200 iterazioni con un clic, quindi concentrarsi su dove iniziano i problemi nel 201 st iterazione.
Anche il debug delle tue funzioni è più semplice. Non è più necessario dichiarare separatamente ciò che sono le variabili "passate" e quindi eseguire parti della funzione. Puoi solo eseguire lo script per la funzione e intervenire. Il debugger mostra tutti i valori delle variabili che si passano e quelle che sono locali alla funzione.
2. Entrare in, sopra e fuori dei blocchi di codice
Sai già che l'espressione che chiami è impeccabile? Fare clic su Passaggio nel debugger per eseguire l'espressione con un clic e fermarsi all'espressione successiva. Sei sicuro che qualcosa stia andando male nella tua funzione? Fare clic su Passaggio per immettere la funzione ed eseguire ciascuna espressione una alla volta all'interno della funzione. Sei a metà strada facendo un passo dopo l'altro attraverso un file Include () e renditi conto che il tuo problema non è qui? Fare clic su Esci per completare l'esecuzione del resto dello script incluso e tornare al debug dell'espressione che segue Includi ().
1. Guardare le variabili
Questa era l'unica cosa che faceva il vecchio debugger, ma era difficile da usare e limitato. Il controllo variabile è una delizia per il nuovo debugger. I valori di ogni singola variabile sono mostrati in qualsiasi ambito esistente: globale, locale, qui, namespace. Non hai bisogno di fare una cosa: è sempre lì. Quando vengono aggiunte nuove variabili nel codice, vengono aggiunte all'elenco appropriato. Aggiungi un nuovo spazio dei nomi e viene visualizzato un nuovo elenco.
Se scrivi script lunghi che usano decine di variabili, queste liste possono diventare schiaccianti. Quindi vai alla scheda Guarda.
Puoi aggiungere solo le poche variabili che vuoi tenere d'occhio.Se si desidera guardare i valori aggiunti a una particolare lista JSL, è possibile sottoscrivere (ad esempio, è possibile guardare la mia lista ). È possibile inserire un ruolo nell'elenco di controllo (ad esempio, è possibile guardare qui: var e global: var allo stesso tempo).È possibile digitare il nome della variabile nell'elenco di controllo, ma è ancora più semplice fare clic con il pulsante destro del mouse sul nome della variabile nel riquadro degli script del debugger e selezionare Aggiungi orologio.Rimanete sintonizzati...
Guarda questo spazio per altri post sul debugger, dove discuterò particolari caratteristiche e utilizzerò i casi in dettaglio. Interessato a un particolare argomento di debugger? Menzionalo nei commenti e cercherò di affrontarlo in un post futuro.
Dewey ha scritto: Ð xcellennt Ñ ost. Mi occuperò di ma ... Dewey ha scritto:
Ð xcellennt Ñ ost. Avrò a che fare con molti di questi
problemi pure ...
John Sall offre riflessioni su JMP 10 scritto: [...] inves ... John Sall offre riflessioni su JMP 10 ha scritto:
[...] investire nella scrittura di script e JMP 10 ha molte nuove funzionalità da offrire in quell'area. Ha un nuovo debugger JSL, supporto per lo schermo diviso per il registro JMP, editing drag-and-drop, miglioramento della costruzione del componente aggiuntivo e [...]
Melanie Drake ha scritto: Corri i tuoi script uno per uno, ... Melanie Drake ha scritto:
Esegui i tuoi script uno per uno, avviando JMP e chiudendo JMP per ciascuno, oppure lancia JMP una sola volta e esegui gli script come include? Nel primo caso, (un'istanza per script), lo show () viene visualizzato nel registro per me. Nel secondo, lo script del contenitore esce da JMP, quindi non si vede nulla. Un collega ha suggerito di utilizzare un'acquisizione del registro in ogni script e di salvare l'acquisizione del registro come un file di testo che è possibile esaminare in seguito. Ho un approccio alternativo qui sotto.
I messaggi di errore non sono cambiati molto.
Penso che se si inviano cattivi riferimenti di colonna a una piattaforma, lo script non riesce proprio lì e non si arriva a Is Scriptable (plat). Potresti usare Try () per saltare l'intera faccenda se i riferimenti alla tua colonna sono sbagliati. Per esempio:
Prova (plt = bivariate (x (: nonexistent_column), y (: nonexistent_column_2));
plt << fai qualcosa;
// fai più cose
, // else se una qualsiasi delle suddette espressioni fallisce, fallo invece
Salva file di testo ("c: / error log.txt",
"c: \ ben's script.jsl: errore nel primo caso bivariato",
modalità ( "aggiungere")
)
);
Nota che dovresti prima creare il file di testo, prima di poterlo aggiungere. Un approccio come questo potrebbe aiutare a mitigare anche il primo problema.
Grazie per le tue domande interessanti!
Ben ha scritto: domanda veloce - eseguo un gruppo di script tramite ... Ben ha scritto:
Domanda veloce: eseguo un gruppo di script tramite la riga di comando. JMP 8 o 9 ha introdotto una nuova "funzione" con la quale fare ciò fa sì che lo script venga eseguito - ma non appare. Quindi, se uno script che lancio tramite la riga di comando barfs, verrà visualizzato ora come ha fatto in 6? In 9 ho problemi ad entrare in una finestra JMP bloccata con "N col (dtab) - dtab non è un riferimento alla tabella dati" e poca idea su quale script si è richiamato N col (dtab). Ho provato ad aggiungere "show (" lanciando c: \ ben's script.jsl ")" ma che non sembra MAI apparire quando succede.
Inoltre, utile per il debug - impostazioni predefinite quando si esegue solo uno script - JMP lo sputa ancora
"Colonna non trovata in argomento errato (x)"
?
('x' a volte appare come un numero)
Avere qualcosa come
"hai chiesto la colonna" Bens_column_name "nella tabella" Bens_target_data_table "nella riga di codice 1234 in cui hai detto" eval (Bens_column_list_variable) "ma non esiste una colonna di questo tipo"
è un errore molto più utile.
Inoltre, non penso che questo sia automaticamente fatale, e spesso non lanciare un errore per "cattiva colonna" è problematico - una frase "catch" di solito deve apparire da qualche parte:
plt = bivariate (x (: nonexistent_column), y (: nonexistent_column_2));
plt << fai qualcosa;
se voglio che salti le cattive colonne, ho bisogno di un
IsScriptable (PLT);
Comunque.
Grazie.
Jenny M ha scritto: You rock Mel! Jenny M ha scritto:
Fai rock Mel!
Lee Creighton ha scritto: Mi piacerebbe una demo che mostri le variazioni locali ... Lee Creighton ha scritto:
Mi piacerebbe una demo che mostra le variabili locali nel debugger.