調試腳本
『壹』 什麼軟體是編輯調試bat腳本文件的最佳工具
個人覺得是notepad++
『貳』 如何進行html調試和js腳本調試
工具/原料
chrome瀏覽器 Mozilla firefox 電腦
方法/步驟
1、以chrome為例,首先打開需要調試的頁面,按F12快捷鍵打開調試工具。
『叄』 如何調試perl腳本
進入退出:
perl
-d debugtest用調試器載入perl程序運行,互動式界面
Loading
DB routines from perl5db.pl version 1.3
Editor
support available.
Enter
h or `h h' for help, or `perldoc
perldebug'
for more help.
main::(p4.pl:2): my($xx,$yy)=(1,1);
DB<1>
先是歡迎信息,顯示第一個可執行行:程序將要執行的當前行號。包名,文件名,文件中的行號。
提示符DB<n>
n為命令行號。h可看幫助,q退出調試器
l
預設顯示10行 再輸入l接著顯示10行
l
10 指定顯示第10行
l
8-10 指定顯示行的范圍
l
8+3 指定從哪行開始多少行。
l
subs 指定顯示函數,提供函數名。如果太長只顯示前幾行,用l接著顯示
-
顯示在當前行前面的行,再輸入-繼續向前
w
7 包含指定行的顯示窗口 windows可能不一樣
//
?? 從當前行搜索包含指定模式的行 /find/
//從前向後正向搜索,??從後向前逆向搜索 可忽略?? //中後面的? /。
S
列出所有函數,包名::函數
無參數的預設形式列出所有底層和繼承的函數,太多。加上搜索模式,指定當前程序包 S main可列出含main的函數
s 執行單條語句 顯示下一條要執行的語句。如果需要交互會等待輸入。
對於函數,僅僅是進入不執行,如果不進入函數內部,要跳過用n。不能進入系統內部的庫函數,只能進入自己定義的
n 執行一行程序,stepover 不進入函數。
f 執行當前函數剩下的語句,顯示跟隨函數的語句
step
out 舊命令,現在為切換文件名
回車
如果執行了s或n,以後只用回車重復執行上一個s或n的命令。
r 在函數中執行到函數外
b 10
在哪一行設置斷點。如果此行非執行語句,顯示不能設置斷點。如果一條語句有多行,則在第一行設置,其餘行不能設置。
b func在函數處設置斷點
b 10
($curdir eq
"") 當條件為真時中斷執行
c
執行到斷點或終止。繼續
c
12臨時斷點,只中斷一次,繼續執行在12行中斷。
L
列出所有斷點。列出前幾行,當前行,斷點。斷點條件。
B
10刪除斷點。不帶參數認為是下一行是斷點。
B *
刪除所有斷點。
X
var 不帶參數列出main包的所有變數,包括預定義的變數。指定變數不帶$,@。可能是符號表中的變數才行。現在與V同。
V
var 列出任何包的變數。只指定包名列出包的所有變數。指定包及變數為main
var。無::
S
列出所有可用的函數,包名::函數 無參數的預設形式列出所有底層和繼承的函數,太多。加上搜索模式,
指定當前程序包
S
main可列出含main的函數
p
expr
指印表達式值。把標准輸出重定向也會輸出到屏幕。
程序到達某一行時指定執行一條或多條語句。常見的行動作是顯示變數值或把含錯誤值的變數重置為指定的值
a
10 print ("curdir is $curdir\n") 多條語句在一行中用分號;分開,當要續行時用\ 執行完第10行執行指定的語句。
A
*刪除所有行動作
A 10刪除第10行的動作
>
print 在程序開始執行前執行語句。無參數形式刪除設置
<
print 在程序執行完成後執行語句。無參數形式刪除設置
跟蹤 顯示每一個執行行。
t
打開,關閉跟蹤。每執行顯示一行。
任何非調試命令的perl語句都可執行。分號可忽略。更改變數值。
H
列出從前命令
!
n 執行從前命令。忽略行號執行上一條命令
n=-2跳過2條命令。從當前H列表逆向跳過。
T
棧跟蹤。調用級
$
= &main::sub2('hi') from file debug1 line 7
$
= &main::sub1('hi') from file debug1 line 3
當前程序在第7行,在main包的sub2函數中,以hi為實際傳遞的參數。返回簡單變數,此函數由sub1調用。
=
別名 命令 給命令定義別名 =
pc print ("curdir is $curdir\n");別名存在%DB(%DB::alias)中。無參數列出定義的別名。輸入pc列印語句。
預定義別名:每次載入調試器自動定義別名。在.perldb中加入$DB'alias{"pc"} = 's/^pc/print
("curdir is $curdir\n");/';
錯誤檢查
Lint perl -MO=Lint,-u pl 編譯時檢查
perldiag錯誤信息
-w 重定義函數變數未使用
Use strict;
use diagnostics 警告信息。
命令行參數簡介
-c 語法檢查
-v版本
-w警告信息
-e執行單行程序
-s為程序提供命令行選項。perl -s prog.pl
-q =>$q=1作為選項。不出現在@ARGV中。否則不加-s,-q作為字元串存在@ARGV中。可賦值-abc="abc"
跟在程序名後帶-的是選項,不帶-的不是,不是選項的項後面的所有都不是選項。
-P先運行c預處理器,輸出再由perl執行
-I指定目錄中的包含文件
-n循環處理多個文件。不用while
-p讀文件行並顯示。同n,不用print自動顯示。
-i編輯文件,讀然後寫迴文件。
-a分割行到@F
-F分割模式,指定分割符
-0
指定輸入行結束符,用八進製表示
-1
指定輸出行結束符
-x從消息中抽取程序。忽略行,直到遇到#!..perl。到文件尾,ctrl-d
ctrl-z __END__時結束
-u產生coremp
-U可以執行不安全操作
-S從路徑中查找程序
-D設置調試標志
-T寫安全程序。從外部獲得的數據不能作為命令或修改文件系統
-d使用調試器
『肆』 有能調試javascript腳本的工具嗎
現在「富客戶端」是炒得比較火的一個概念。所謂的富客戶端一般需要寫大量的javascript/vbscript代碼,腳本語言是比較難調試的,雖然可以使用OFFICE中帶的腳本調試程序、DOTNET或其它的專業工具來調試,可總是些不方便。
寫過VC程序的人相信比較熟悉TRACE、afxDump等幾個函數,這幾個函數可以在工具窗口實時的輸出一些調試信息,可以很方便的發現一些運行時錯誤。有人使用純腳本的方式實現了類似的跟蹤調試功能,經過使用發現確實可以給開發帶來比較大的方便。代碼是以CodeProject網站上找到的,原理很簡單,使用很方便。調試信息分為Message、Warn及Exception幾種,以不同的顏色顯示,很直觀。
下面把相應代碼及使用幫助貼出來,感興趣的網友可以拷貝粘貼後使用。
主要是兩個文件:
/***************************************************************************/
一、腳本文件(文件名:debuggingTools.js)
/***************************************************************************/
//debug helper class to control popup windows
var DebugHelper = function()
{
this.Active = true;
this.ShowException = true;
this.ShowURL = true;
this.ShowLastModified = false;
this.ShowReferrer = false;
this.VerboseMode = false;
//reference to the popup window
this.DebugWindow = null;
this.CssStyleFile = new String("debugWindow.css");
this.WindowStyle = new String("left=0,top=0,width=300,height=300,scrollbars=yes,status=no,resizable=yes");
//no spaces to run correctly on internet explorer
this.WindowName = new String("JavascriptDebugWindow");
this.WindowTitle = new String("Javascript Debug Window");
}
//method to show the debug window
DebugHelper.prototype.ShowWindow = function()
{
try
{
if( this.Active )
{
this.DebugWindow = window.open("", this.WindowName, this.WindowStyle);
this.DebugWindow.opener = window;
//open the document for writing
this.DebugWindow.document.open();
this.DebugWindow.document.write(
"<html><head><title>" + this.WindowTitle + "</title>" +
"<link rel='stylesheet' type='text/css' href='" + this.CssStyleFile + "' />" +
"</head><body><div id='renderSurface' style='width: 100%; height: 100%;' /></body></html>\n"
);
this.DebugWindow.document.close();
}
}
catch(ex)
{
//ignore exception
}
}
//if the debug window exists, then write to it
DebugHelper.prototype.$Write = function(cssClass, message, url, lastModified, referrer)
{
try
{
if( this.Active )
{
if( this.DebugWindow && ! this.DebugWindow.closed )
{
var msg = message;
if( this.ShowURL && url != null )
msg += " at " + url;
if( this.ShowLastModified && lastModified != null )
msg += " last modified in " + lastModified;
if( this.ShowReferrer && referrer != null )
msg += " referrer " + referrer;
this.DebugWindow.document.getElementById("renderSurface").innerHTML = "<span class='" + cssClass + "'>" + msg + "</span>" + this.DebugWindow.document.getElementById("renderSurface").innerHTML;
}
}
}
catch(ex)
{
//ignore exception
}
}
//write a message to debug window
DebugHelper.prototype.Message = function(message, url, lastModified, referrer)
{
try
{
this.$Write("debugMessage", message, url, lastModified, referrer);
}
catch(ex)
{
//ignore exception
}
}
//same as debug, plus another style applyied
DebugHelper.prototype.Warn = function(message, url, lastModified, referrer)
{
try
{
this.$Write("debugWarn", message, url, lastModified, referrer);
}
catch(ex)
{
//ignore exception
}
}
//same as debug, plus a strong style applyied
DebugHelper.prototype.Exception = function(message, url, lastModified, referrer)
{
try
{
if( this.ShowException )
{
this.$Write("debugException", message, url, lastModified, referrer);
}
}
catch(ex)
{
//ignore exception
}
}
//if the debug window exists, then close it
DebugHelper.prototype.HideWindow = function()
{
try
{
if( this.DebugWindow && !this.DebugWindow.closed )
{
this.DebugWindow.close();
this.DebugWindow = null;
}
}
catch(ex)
{
//ignore exception
}
}
//create a global debug object
var debugHelper = new DebugHelper();
//you should show the window right here to get loading errors or sintax errors of other pages
//debugHelper.ShowWindow();
//catch generic errors also
function WindowOnError(msg, url, line)
{
if( debugHelper )
{
debugHelper.Exception(msg, line + " at " + url);
}
}
window.onerror = WindowOnError;
/***************************************************************************/
二、樣式表(文件名:debugWindow.css)
/***************************************************************************/
body
{
background-color: #ffffff;
font-family: "Courier New", Courier, monospace;
}
span.debugMessage
{
border-bottom:1px dotted #cccccc;
color: #000000;
display: block;
margin: 1px;
}
span.debugWarn
{
border-bottom:1px dotted #aaaa00;
color: #0000aa;
display: block;
}
span.debugException
{
border-bottom:1px dotted #ff0000;
color: #aa0000;
display: block;
font-weight: bold;
}
/***************************************************************************/
三、使用示例
/***************************************************************************/
使用很簡單了,在網頁上包含上面的腳本文件,使用下面幾個函數就可以了。
debugHelper.ShowWindow();//顯示調試窗口
debugHelper.HideWindow();//隱藏調試窗口
debugHelper.Message("信息");//顯示message級別信息
debugHelper.Warn("信息");//顯示warn級別信息。
debugHelper.Exception("信息");//顯示Exception級別信息。
『伍』 如何調試LoadRunner腳本
VuGen 包含兩個選項來幫助調試 Vuser 腳本:「分步運行」命令和斷點。這些選項不適用於 VBscript 和 VB 應用程序類型的 Vuser。
要查看「調試」工具欄,請執行下列操作:
右鍵單擊工具欄區域,然後選擇「調試」。「調試」工具欄將顯示在工具欄區域
中。
「分步運行」命令
「分步運行」命令在運行腳本時一次運行一行。通過該命令,可以依次查看腳本
每一行的執行情況。
要分步運行腳本,請執行下列操作:
1 依次選擇「Vuser」 > 「分步運行」,或者單擊「調試」工具欄上的「步驟」按
鈕。VuGen 將執行腳本的第一行。
2 繼續單擊「步驟」按鈕來執行該腳本,直到腳本運行完成為止。
斷點
通過斷點可以使腳本在特定位置暫停執行。它可用於在執行期間的預定點處檢查
該腳本對應用程序的影響。要管理書簽,請參閱第 186 頁上的「斷點管理器」。
要設置斷點,請執行下列操作:
1 將游標置於腳本中要停止執行的行上。
2 依次選擇「插入」 > 「切換斷點」,或者單擊「調試」工具欄上的「斷點」按
鈕。也可以按鍵盤上的 F9 鍵。將在腳本的左邊距顯示「斷點」符號 ( )。
3 要禁用斷點,請將游標置於包含斷點符號的行上,然後單擊「調試」工具欄上的
「啟用 / 禁用斷點」按鈕。「斷點」符號中將會顯示一個白點 ( )。禁用一個斷點
後,執行將在下一個斷點處暫停。再次單擊該按鈕可以啟用斷點。
要刪除斷點,請將游標置於包含斷點符號的行上,然後單擊「斷點」按鈕或者按
F9 鍵。
要運行包含斷點的腳本,請執行下列操作:
1 照常運行腳本。
到達斷點時, VuGen 將暫停腳本的執行。可以檢查腳本運行到斷點時的效果,
並進行必要的更改,然後從斷點處重新啟動腳本。
2 要繼續執行,請依次選擇「Vuser」 > 「運行」。
重新啟動後,腳本將繼續執行,直到遇到下一個斷點或腳本完成。
斷點管理器
可以使用斷點管理器來查看和管理斷點。通過斷點管理器您可以操縱腳本中的所
有斷點。
要打開斷點管理器,請選擇「編輯」 > 「斷點」。
要跳至腳本中的斷點處,請執行下列操作:
1 從列表中選擇一個斷點。
2 單擊「在腳本中突出顯示」。則將在腳本中突出顯示該行。
注意,每次只能突出顯示一個斷點。
管理斷點
可以通過斷點管理器添加、刪除、禁用斷點或者為斷點設置條件
要添加斷點,請執行下列操作:
1 單擊「添加」。將打開「添加斷點」對話框。
2 選擇「操作」,並指定要添加斷點的行號。
3 單擊「確定」。該斷點將被添加到斷點列表中。
要刪除斷點,請執行下列操作:
1 要刪除單個斷點,請選擇該斷點並單擊「刪除」。
2 要立即刪除所有斷點,請單擊「全部刪除」。
要啟用 / 禁用斷點,請執行下列操作:
1 要啟用斷點,請在「操作」列內選中操作的復選框。
2 要禁用斷點,請在「操作」列內清除操作的復選框。
通過斷點管理器您可以將斷點設置為在某些條件下暫停執行。
『陸』 按鍵精靈 如何對腳本進行一步一步調試
點擊調試,然後有四個命令,分別是啟動,中止,暫停,單步
單步的快捷鍵是ScrollLock
另一點就是善用TracePrint 調試輸出命令
『柒』 如何調試linux shell腳本
調試方法:
sh -x strangescript
這將執行該腳本並顯示所有變數的值。
shell還有一個不需要執行腳本只是檢查語法的模式。可以這樣使用:
sh -n your_script
這將返回所有語法錯誤。
linux/unix shell l腳本調試方法
Shell提供了一些用於調試腳本的選項,如下所示:
-n
讀一遍腳本中的命令但不執行,用於檢查腳本中的語法錯誤
-v
一邊執行腳本,一邊將執行過的腳本命令列印到標准錯誤輸出
-x
提供跟蹤執行信息,將執行的每一條命令和結果依次列印出來
使用這些選項有三種方法,一是在命令行提供參數
$ sh -x ./script.sh二是在腳本開頭提供參數
#! /bin/sh -x第三種方法是在腳本中用set命令啟用或禁用參數
『捌』 shell 腳本如何進行調試
Shell提供了一些用於調試腳本的選項,如:
1.-n :讀一遍腳本中的命令但不執行,用於檢查腳本中的語法錯誤。
2.-v :一邊執行腳本,一邊將執行過的腳本命令列印到標准錯誤輸出。
3.-x :提供跟蹤執行信息,將執行的每一條命令和結果依次列印出來。該選項有三種常見的使用方法:
1.在命令行提供參數。如:itcast@itcast$ sh -x ./script.sh
2.在腳本開頭提供參數。如:#! /bin/sh -x
在腳本中用set命令啟用或禁用參數。如:set -x 和 set +x分別表示啟用和禁用-x參數,這樣可以只對腳本中的某一段進行跟蹤調試。
學會了嗎?我也是在黑馬程序員學了C之後會的,現在已經工作了,工資15K,福利待遇挺好的。
『玖』 如何調試Shell腳本
1) 檢查語法錯誤: 一般來說我們可以通過修改shell腳本的源代碼,令其輸出相關的調試信息來定位錯誤,那有沒有不修改源代碼來調試shell腳本的方法呢?答案就是使用shell的執行選,下面是一些常用選項的用法: -n 只讀取shell腳本,但不實際執行 -x 進入跟蹤方式,顯示所執行的每一條命令 -c "string" 從strings中讀取命令「-n」可用於測試shell腳本是否存在語法錯誤,但不會實際執行命令。在shell腳本編寫完成之後,實際執行之前,首先使用「-n」選項來測試腳本是否存在語法錯誤是一個很好的習慣。因為某些shell腳本在執行時會對系統環境產生影響,比如生成或移動文件等,如果在實際執行才發現語法錯誤,您不得不手工做一些系統環境的恢復工作才能繼續測試這個腳本。「-c」選項使shell解釋器從一個字元串中而不是從一個文件中讀取並執行shell命令。當需要臨時測試一小段腳本的執行結果時,可以使用這個選項,如下所示: sh -c 'a=1;b=2;let c=$a+$b;echo "c=$c"'"-x"選項可用來跟蹤腳本的執行,是調試shell腳本的強有力工具。「-x」選項使shell在執行腳本的過程中把它實際執行的每一個命令行顯示出來,並且在行首顯示一個"+"號。 "+"號後面顯示的是經過了變數替換之後的命令行的內容,有助於分析實際執行的是什麼命令。 「-x」選項使用起來簡單方便,可以輕松對付大多數的shell調試任務,應把其當作首選的調試手段。2) 調試工具-bashdb 使用shell調試器bashdb,這是一個類似於GDB的調試工具,可以完成對shell腳本的斷點設置,單步執行,變數觀察等許多功能。使用bashdb進行debug的常用命令 1.列出代碼和查詢代碼類: l 列出當前行以下的10行 - 列出正在執行的代碼行的前面10行 . 回到正在執行的代碼行 w 列出正在執行的代碼行前後的代碼 /pat/ 向後搜索pat ?pat?向前搜索pat2.Debug控制類:h 幫助help 命令 得到命令的具體信息 q 退出bashdb x 算數表達式 計算算數表達式的值,並顯示出來 !!空格Shell命令 參數 執行shell命令 使用bashdb進行debug的常用命令(cont.) 控制腳本執行類: n 執行下一條語句,遇到函數,不進入函數裡面執行,將函數當作黑盒 s n 單步執行n次,遇到函數進入函數裡面 b 行號n 在行號n處設置斷點 del 行號n 撤銷行號n處的斷點 c 行號n 一直執行到行號n處R 重新啟動Finish 執行到程序最後
『拾』 如何調試shell腳本各種方法都說說。
方法一:sh -x script.sh
-x選項會將運行到的腳本內容顯示在屏幕上,前面有個+號。這樣就知道哪句被執行到了。對調試很有幫助。
方法二:在腳本中使用debug開關
適用於只調試部分腳本的情況。
set -x
......(要調試的代碼段)
set +x
然後sh script.sh運行腳本
方法三:在腳本中添加列印
比如搞個log輸出函數,專門用於列印調試相關信息。
_log()
{
if [ "$_DEBUG" = "true" ]; then
echo "調試信息"
fi
}
只要在外面控制$_DEBUG開關即可。