5個理由我喜歡新的JSL調試器沒錯,JMP 10附帶了一個全新的JSL調試器。跟老人說再見,向新人問好!當我想知道我在一篇關於它的博客文章中可以說什麼時,我開始思考它如何使我作為JSL腳本編寫者的生活變得更容易。這篇文章介紹了一些很棒的功能,後續帖子將放大細節。
“JSL腳本指南”提供了JSL調試器的完整描述,以及一些簡單的示例以幫助您入門。與此同時,這裡有一些值得期待的事情。
5。有用!
這可能有點苛刻,但我發現我們以前的JSL調試器功能有限且使用起來很痛苦,我從未使用它。我現在發現自己放棄了使用Show(),Print()和Write()s自由地散佈我的代碼的舊習慣,而是轉而使用新的調試器。除了發現我忘了評論或刪除多個Show()之外,還有一個額外的好處就是不向同事發布我的腳本。
作為額外的好處,您不必將/ * debug step * /添加到腳本的頂部進行調試。您可以單擊“調試腳本”工具欄按鈕(
)對於你的腳本 - 它就在Run Script按鈕旁邊。或選擇編輯>調試腳本。或者在腳本窗口中單擊鼠標右鍵,然後選擇“調試腳本”。或按CONTROL-SHIFT-R(Macintosh上的COMMAND-SHIFT-R)。簡單!
4。它在Macintosh上也可用,太多了

哦,快樂的一天!我現在可以在Macintosh和Windows上調試JSL腳本了!兩個平台上的調試器都是相同的。功能相同,功能相同。我知道我的Macintosh愛好者會歡迎這一點,因為在Macintosh上甚至沒有可用的舊調試器。
3。調試循環和用戶編寫的函數
在循環中選擇小段代碼並逐步運行它們(同時嘗試不選擇導致JSL錯誤的逗號)的日子已經結束。我可以聽到來自這裡的歡呼聲。當您通過調試器運行代碼時,您可以看到迭代變量的值在每次更改時自動更新。您可以使用斷點來繞過您知道正在運行的塊。您可以向斷點添加條件,並通過一次單擊運行前200次迭代,然後關注201中您的故障開始的位置 ST 迭代。
調試功能也更容易。您不再需要單獨聲明您的“傳遞”變量,然後運行該函數的各個部分。您只需將腳本運行到該功能並進入該功能即可。調試器顯示您傳入的變量的所有值以及函數本地的變量值。
2。步進,跨越和退出代碼塊
你已經知道你所說的表達是完美的嗎?單擊調試器中的Step Over以單擊運行表達式並停在下一個表達式。你確定你的功能出了什麼問題嗎?單擊Step Into進入函數並在函數內一次運行一個表達式。您是否通過Include()文件逐行逐步執行並意識到您的問題不在這裡?單擊Step Out以完成運行包含的其餘腳本並返回調試Include()後面的表達式。
1。看變量
這是舊調試器所做的一件事,但它很難使用和限制。變量監視是新調試器的一個樂趣。每個變量的值都顯示在任何存在的範圍內 - 全局,本地,此處,命名空間。你不需要做任何事情:它總是在那裡。隨著代碼中添加新變量,它們將添加到相應的列表中。添加新的命名空間,並顯示新的命名空間。
如果你編寫使用許多變量的冗長腳本,那麼這些列表就會變得無法容忍。所以轉到Watch選項卡。
您可以只添加您想要關注的少數變量。如果要在值添加到特定JSL列表時觀察,可以下標(例如,您可以觀看mylist )。您可以在監視列表中查看範圍(例如,您可以在此處觀察:var和global:var同時)。您可以在監視列表中鍵入變量名稱,但更容易在調試器的腳本窗格中右鍵單擊變量名稱並選擇“添加監視”。敬請關注...
觀看此空間以獲取調試器上的更多帖子,我將詳細討論特定功能和用例。對特定的調試器主題感興趣?在評論中提及它,我將在未來的帖子中嘗試解決它。
杜威寫道:ÐxcellenntÑost。我將處理馬...杜威中寫道:
ÐxcellenntÑost。我將處理其中的許多問題
問題也是..
John Sall對JMP 10的反思寫道:[...] inves ... John Sall對JMP 10提出了反思中寫道:
[...]投資編寫腳本,JMP 10在該領域提供了許多新功能。它有一個新的JSL調試器,對JMP日誌的分屏支持,拖放編輯,改進的插件構造,以及[...]
Melanie Drake寫道:你是一個一個地運行你的腳本,......梅蘭妮德雷克中寫道:
您是逐個運行腳本,啟動JMP並為每個腳本退出JMP,還是一次啟動JMP並將腳本作為包運行?在第一種情況下,(每個腳本一個實例),show()出現在我的日誌中。在第二個,容器腳本退出JMP,所以你永遠不會看到任何東西。一位同事建議在每個腳本中使用日誌捕獲並將日誌捕獲保存為文本文件,稍後您可以查看。我有下面的替代方法。
錯誤消息沒有太大變化。
我認為如果您向平台發送錯誤的列引用,那麼您的腳本就會失敗,並且您將無法訪問Is Scriptable(平台)。如果列引用不好,您可以使用Try()跳過整個事情。例如:
嘗試(plt = bivariate(x(:nonexistent_column),y(:nonexistent_column_2));
plt <<做某事;
//做更多的事情
,//如果上述任何表達式失敗,請改為執行此操作
保存文本文件(“c:/ error log.txt”,
“c:\ ben的script.jsl:第一個雙變量情況中的錯誤”,
模式(“追加”)
)
);
請注意,您必須先創建文本文件,然後才能附加到該文本文件。這樣的方法也可以幫助緩解您的第一個問題。
謝謝你有趣的問題!
Ben寫道:快速問題 - 我通過...運行一堆腳本本中寫道:
快速問題 - 我通過命令行運行一堆腳本。JMP 8或9引入了一個新的“功能”,通過它可以使腳本運行 - 但不會出現。那麼,如果我通過命令行barfs啟動的腳本,它現在會像6中那樣顯示嗎?在9我遇到的問題就像早上進入一個JMP窗口卡住打開“N col(dtab) - dtab不是數據表引用”,並且很少知道哪個腳本調用了N col(dtab)。我已經嘗試添加“show(”啟動c:\ ben的script.jsl“)”但是,這種情況似乎永遠不會出現。
此外,對於調試很有用 - 僅運行腳本時的默認設置 - JMP仍會吐出
“在壞參數(x)中找不到列”
?
('x'有時顯示為數字)
有類似的東西
“你在代碼行1234中的表”Bens_target_data_table“中要求列'Bens_column_name',你在那裡說'eval(Bens_column_list_variable)'但是沒有這樣的列”
是一個更有用的錯誤。
此外,我不認為這是自動致命的,並且經常不會為“壞列”拋出錯誤是有問題的 - 一個'catch'語句通常必須出現在某個地方:
plt = bivariate(x(:nonexistent_column),y(:nonexistent_column_2));
plt <<做某事;
如果我希望這只是跳過壞列,我將需要一個
IsScriptable(PLT);
無論如何。
謝謝。
Jenny M寫道:你搖滾梅爾!珍妮M. 中寫道:
梅爾搖滾!
Lee Creighton寫道:我喜歡一個顯示局部變化的演示...李克雷頓中寫道:
我喜歡在調試器中顯示局部變量的演示。