调试脚本
‘壹’ 什么软件是编辑调试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开关即可。