当前位置:首页 » 编程软件 » 脚本调试命令

脚本调试命令

发布时间: 2022-05-13 12:14:06

❶ 如何调试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 执行到程序最后

❷ 脚本调试器如何使用

这两类脚本都使用TCL脚本语言,语法格式相同。两者的差别在于:用于SCADA的脚本不涉及界面部分,主要集中于数据处理。而用于View的脚本侧重于控制功能,多与界面相关。SCADA的脚本大部分是定时执行或在系统启动时执行,而View的脚本多由用户动作进行触发执行。 ScriptDebugger是HMIBuilder的脚本编辑器和调试器,主要用于TCL脚本的调试。利用ScriptDebugger,用户可以编写TCL脚本,并且对脚本进行排错。当确保脚本没有错误时,可以放置到对应的目录下,供SCADA和VIEW来调用。这种工作方式能够有效的缩短工程开发时间,提高工作效率。 ScriptDebugger首先是一个TCL的脚本编辑器,它的工作方式与Windows下的编辑器(比如Word、UtraEdit)基本相同。能够实现对各种关键字的高亮显示。TCL中的命令以蓝色来显示,TCL中的数字以褐色来显示,注释则以灰色显示,用户可以根据字符串的颜色来判断其内容,并且可以避免一些简单的错误。此外,ScriptDebugger提供了字符串的查找和置换功能,这些功能与微软的Office中提供的功能类似,比较简单易懂。 利用ScriptDebugger进行编写的效率较高,当编写完成后,用户可以即时的对脚本进行调试,如果脚本有错误,调试器会在下面的信息输出窗口输出错误信息以及错误所在的区域,帮助用户排除错误。此外,用户可以在脚本的某些部分设定断点,这样点击“运行”命令时,调试器会直接执行到断点处,用户可以选择在断点处单步执行或直接运行。 在调试过程中,用户可以设定需要查看的变量。这样每次单步执行时就会在变量查看窗口中显示出这些变量的值,由用户判断是否正确,协助调试。

❸ 按键精灵 如何对脚本进行一步一步调试

点击调试,然后有四个命令,分别是启动,中止,暂停,单步
单步的快捷键是ScrollLock

另一点就是善用TracePrint 调试输出命令

❹ 如何在 Windows PowerShell ISE 中调试脚本

介绍如何通过使用 Windows PowerShell® 集成脚本环境 (ISE) 直观调试功能来调试本地计算机上的脚本。
如何管理断点如何管理调试会话如何在调试过程中步越、步入和步出如何在调试时显示变量的值
如何管理断点
断点是脚本中你想要操作暂停的指定位置,这样你可以检查变量的当前状态和脚本运行的环境。 一旦你的脚本被断点暂停,你可以在控制台窗格中运行命令来检查你的脚本状态。 你可以输出变量或运行其他命令。 甚至可以修改对正在运行的脚本的上下文可见的任何变量的值。 检查完你想要查看的内容后,可以恢复该脚本的运行。
可以在 Windows PowerShell 调试环境中设置三种类型的断点:
行断点 **** 在脚本运行期间,当达到所指定的行时,脚本暂停
变量断点。 每当指定变量的值发生更改时,脚本暂停。
命令断点。 在脚本运行期间,每当要运行指定命令时,脚本暂停。 它可以包括参数,以便仅对所需操作进一步筛选断点。 该命令还可以是你创建的函数。
其中,在 Windows PowerShell ISE 调试环境中,只有行断点可以通过使用菜单或键盘快捷方式进行设置。 可以设置其他两种类型的断点,但应通过使用 Set-PSBreakpoint [m2] cmdlet 从控制台窗格中进行设置。 本部分介绍了如何通过使用菜单(若有)在 Windows PowerShell ISE 中执行调试任务,并通过脚本从控制台窗格中执行更广泛的命令。
设置断点
仅当保存脚本后,才可以在其中设置断点。 右键单击你想要设置行断点的行,然后单击“切换断点”。 或者,单击你想要设置的行断点所在的行,然后按 F9,或在“调试”菜单上,单击“切换断点”。********
以下脚本是如何通过使用 Set-PSBreakpoint cmdlet 从控制台窗格中设置变量断点的示例。
# This command sets a breakpoint on the Server variable in the Sample.ps1 script.
set-psbreakpoint -script sample.ps1 -variable Server

列出所有断点
在当前 Windows PowerShell® 会话中显示所有断点。
在“调试”菜单上,单击“列表断点”。******** 以下脚本是如何通过使用 Get-PSBreakpoint cmdlet 从控制台窗格中列出所有断点的示例。
# This command lists all breakpoints in the current session.
get-psbreakpoint

移除断点
移除断点会将其删除。 如果你认为稍后还可能再次使用,请考虑改为禁用。 右键单击你想要移除的断点所在的行,然后单击“切换断点”。 或者,单击你想要移除的断点所在的行,然后在“调试”菜单上,单击“切换断点”。******** 以下脚本是如何通过使用 Remove-PSBreakpoint cmdlet 从控制台窗格中移除具有指定 ID 的断点的示例。
# This command deletes the breakpoint with breakpoint ID 2.
remove-psbreakpoint -id 2

移除所有断点
若要移除在当前会话中定义的所有断点,在“调试”菜单上,单击“移除所有断点”。********
以下脚本是如何通过使用 Remove-PSBreakpoint cmdlet 从控制台窗格中移除所有断点的示例。
# This command deletes all of the breakpoints in the current session.
get-breakpoint | remove-breakpoint

禁用断点
禁用断点不会将断点移除;只是会将其关闭,直至启用。 若要禁用特定行断点,右键单击你想要禁用的行断点所在的行,然后单击“禁用断点”。 或者,单击你想要禁用的断点所在的行,然后按 F9,或在“调试”菜单上,单击“禁用断点”。******** 以下脚本是如何通过使用 Disable-PSBreakpoint cmdlet 从控制台窗格中移除具有指定 ID 的断点的示例。
# This command disables the breakpoint with breakpoint ID 0.
disable-psbreakpoint -id 0

禁用所有断点
禁用断点不会将断点移除;只是会将其关闭,直至启用。 若要禁用在当前会话中的所有断点,在“调试”菜单上,单击“禁用所有断点”。******** 以下脚本是如何通过使用 Disable-PSBreakpoint cmdlet 从控制台窗格中禁用所有断点的示例。
# This command disables all breakpoints in the current session.
# You can abbreviate this command as: "gbp | dbp".
get-psbreakpoint | disable-psbreakpoint

启用断点
若要启用特定断点,右键单击你想要启用的断点所在的行,然后单击“启用断点”。 或者,单击你想要启用的断点所在的行,然后按 F9,或在“调试”菜单上,单击“启用断点”。******** 以下脚本是如何通过使用 Enable-PSBreakpoint cmdlet 从控制台窗格中启用特定断点的示例。
# This command enables breakpoints with breakpoint IDs 0, 1, and 5.
enable-psbreakpoint -id 0, 1, 5

启用所有断点
若要启用在当前会话中定义的所有断点,在“调试”菜单上,单击“启用所有断点”。******** 以下脚本是如何通过使用 Enable-PSBreakpoint cmdlet 从控制台窗格中启用所有断点的示例。
# This command enables all breakpoints in the current session.
# You can abbreviate the command by using their aliases: "gbp | ebp".
get-psbreakpoint | enable-psbreakpoint

如何管理调试会话
开始调试之前,必须设置一个或多个断点。 你不能设置一个断点,除非已保存你想要调试的脚本。 有关如何设置断点的说明,请参阅如何管理断点或 Set-PSBreakpoint。 开始调试后,将无法编辑脚本,除非停止调试。 运行之前,将自动保存设置有一个或多个断点的脚本。
启动调试
按 F5 或在工具栏上单击“运行脚本”图标,或在“调试”菜单上单击“运行\/继续”。 脚本将一直运行,直到它遇到第一个断点。 它将在此处暂停操作,并突出显示它暂停时所在的行。
继续调试
按 F5 或在工具栏上单击“运行脚本”图标,或在“调试”菜单上单击“运行\/继续”,或在控制台窗格中键入 C,然后按 ENTER。 这将导致脚本继续运行到下一个断点,或如果接下来没有遇到任何断点的话运行到脚本的末尾。
查看调用堆栈
调用堆栈会显示脚本中的当前运行位置。 如果脚本在由其他函数调用的函数中运行,则会由输出中的附加行在显示中表示。 最底行显示原始脚本以及脚本中调用函数所在的行。 下一行显示该函数以及函数中可能调用了另一个函数所在的行。 最顶行显示设置了断点的当前行的当前上下文。
若要在暂停时查看当前调用堆栈,请按 CTRL+SHIFT+D,或在“调试”菜单上单击“显示调用堆栈”,或在控制台窗格中键入 K,然后按 ENTER。
停止调试
按 SHIFT-F5,或在“调试”菜单上单击“停止调试器”,或在控制台窗格中键入 Q,然后按ENTER。
如何在调试过程中步越、步入和步出
单步执行是一次运行一条语句的过程。 你可以在一个代码行上停止,然后检查变量的值和系统状态。 下表描述了常见的调试任务,如步越、步入和步出。

调试任务 说明 如何在 PowerShell ISE 中完成它
步入 执行当前的语句,然后在下一个语句处停止。 如果当前语句是一个函数或脚本调用,则调试器将单步调试该函数或脚本,或者停止在下一条语句上。 按 F11,或在“调试”菜单上,单击“步入”,或者,在控制台窗格中,键入 S,然后按 ENTER。********
步越 执行当前的语句,然后在下一个语句处停止。 如果当前语句是一个函数或脚本调用,则调试器将执行整个函数或脚本,或者在函数调用后在下个语句处停止。 按 F10,或在“调试”菜单上,单击“步越”,或者在控制台窗格中,键入 V,然后按 ENTER。********
步出 跳出当前函数,如果函数是嵌套的则返回上一级。 如果在主正文中,脚本将执行到末尾,或到下一个断点。 将执行跳过的语句,但不会单步遍历。 按 SHIFT+F11,或在“调试”菜单上单击“步出”,或在控制台窗格中键入 O,然后按 ENTER。
继续 继续执行到结束,或到下一个断点。 将执行已跳过的函数和调用,但不会进行单步遍历。 按 F5 或在“调试”菜单上单击“运行\/继续”,或在控制台窗格中键入 C,然后按 ENTER。
如何在调试时显示变量的值
单步遍历代码时,可以在脚本中显示变量的当前值。
显示标准变量的值
使用以下方法之一:
在脚本窗格中,将鼠标悬停在变量上,以在工具提示中显示它的值。
在控制台窗格中,键入变量的名称并按 ENTER。
ISE 中的所有窗格始终位于同一作用域中。 因此,调试脚本时,你在控制台窗格中键入的命令在脚本作用域中运行。 这样,你便可以使用控制台窗格查找变量的值,并调用仅在脚本中定义的函数。
显示自动变量的值
调试脚本时,可以使用前述方法显示几乎所有变量的值。 但是,这些方法不适用于以下自动变量。
$_
$Input
$MyInvocation
$PSBoundParameters
$Args
如果你尝试显示这些变量中的任何一个的值,你将获取调试器使用的内部管道中变量的值,而不是脚本中变量的值。 对于一些变量($_、$Input、$MyInvocation、$PSBoundParameters 和 $Args),可以使用以下方法解决此问题:
在脚本中,将自动变量的值分配给一个新变量。
通过将鼠标悬停在脚本窗格中新变量上,或通过在控制台窗格中键入新变量来显示新变量的值。
例如,若要显示 $MyInvocation 变量的值,在脚本中,将该值分配给一个新变量(如 $scriptname),然后将鼠标悬停在 $scriptname 变量上,或键入 $scriptname 变量以显示其值。
#In MyScript.ps1
$scriptname = $MyInvocation.MyCommand.Path

#In the Console Pane:
C:\ps-test> $scriptname
C:\ps-test\MyScript.ps1

❺ 如何调试linux shell脚本

1、shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误, 可以这样来进行调试:
sh -x strangescript
这将执行该脚本并显示所有变量的值。

2、shell还有一个不需要执行脚本只是检查语法的模式。可以这样使用:
sh -n your_script
这将返回所有语法错误。

3、linux/unix shell l脚本调试方法
Shell提供了一些用于调试脚本的选项,如下所示:
-n
读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
-v
一边执行脚本,一边将执行过的脚本命令打印到标准错误输出
-x
提供跟踪执行信息,将执行的每一条命令和结果依次打印出来
使用这些选项有三种方法,一是在命令行提供参数

❻ systemtap怎么调试脚本程序

其实下面要说的没多少硬货,算是个自己这些日子使用春哥写的那几个systemtap脚本调优的经验总结吧。
一、systemtap安装
因为一直在ubuntu上使用,所以安装很简单 sudo apt-get install systemtap,源码安装的话请参考这篇文章:http://www.cnblogs.com/hazir/p/systemtap_introction.html 中的方法一。

二、内核调试信息
不用跟踪内核态性能大概也不需要,不过保不齐会用到所以我也把内核调试信息搞上了。对于ubuntu这种发行版内核来说好处是官方已经提供了(URL:http://ddebs.ubuntu.com/pool/main/l/linux/),根据自己的内核(uname -a 查询)挑选版本。 如我的是Linux ubuntu 3.13.0-32-generic 那么对应的就是:linux-image-3.13.0-32-generic-dbgsym_3.13.0-32.57_amd64.ddeb。
下载后用 dpkg -i linux-image-3.13.0-32-generic-dbgsym_3.13.0-32.57_amd64.ddeb 安装。

三、Hello Systemtap!
上面这些完成以后可以使用命令:sudo stap -ve 'probe begin { log("hello Systemtap!") exit() }' 来测试是否安装成功。如果成功的话会有类似下面的输出:
春哥的nginx <wbr>systemtap调试脚本简单介绍

四、nginx-systemtap-toolkit
进入正题,这个就是主要介绍的章亦春大神写的systemtap nginx调试的系列脚本了(URL:Github地址),提供了活动请求的查询、ngx_lua模块的当前lua堆栈查看、pcre模式串/运行时间分析、C堆栈采样等等炸裂功能。
首先介绍下C堆栈采样这个脚本,结合Brendan Gregg大神写的FlameGraph tools(URL:https://github.com/brendangregg/FlameGraph),可以画出功能实用、看着酷炫的火焰图。如图:春哥的nginx <wbr>systemtap调试脚本简单介绍
这个东西的原理就是在程序运行的时候每隔一定的时间对指定进程的C堆栈进行采样,将当前各栈帧的函数名保存起来。因为采样时间是恒定的,所以最后的结果上如果一个函数占用cpu时间越长,那么得到的采样次数也就越多,最后反映到火焰图上的横轴长度就越长。另外颜色深浅其实没什么含义,只是方便查看。
使用方法:
1、首先确定编译的代码要带有调试i信息,以便调试脚本可以获得具体的代码信息。如nginx就要加上--with-debug开关。
2、其次要调优的进程已经启动,并且获得其pid,对于nginx这种多进程的程序,需要找到一个worker进程的pid,所以如果是开发环境调优的话,可以考虑使用单进程跑nginx。
3、命令sudo ./nginx-systemtap-toolkit/sample-bt -p 1147 -u -t 20 > trace.txt
其中-p 指定进程的pid
-u 追踪用户态的调用堆栈(也可以使用-k追踪程序运行期间在内核态的堆栈)
-t 脚本的运行时间,达到时间之后脚本自动停止,将堆栈信息输出,单位为秒
启动后会有类似的信息:
WARNING: Tracing 1147 (/home/kawaru/nginx/sbin/nginx) in user-space only...
提示已经开始跟踪,这是可以用ab等等东西打点流量,等20秒之后会显示:
WARNING: Time's up. Quitting now...(it may take a while)

❼ 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,福利待遇挺好的。

❽ 什么是脚本呀脚本调试又是什么意思呀

什么叫脚本

脚本script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。各类脚本目前被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。举个最常见的例子,当我们点击网页上的E-mail地址时能自动调用Outlook Express或Foxmail这类邮件软件,就是通过脚本功能来实现的。又如洪恩网站�http�//www.hongen.com一些网页的英文新闻内容旁会有一个三角符号,点击它就可以听到英文诵读,这也是脚本在起作用。 也正因为脚本的这些特点,往往被一些别有用心的人所利用。例如在脚本中加入一些破坏计算机系统的命令,这样当用户浏览网页时,一旦调用这类脚本,便会使用户的系统受到攻击。所以用户应根据对所访问网页的信任程度选择安全等级,特别是对于那些本身内容就非法的网页,更不要轻易允许使用脚本。通过“安全设置”对话框,选择“脚本”选项下的各种设置就可以轻松实现对脚本的禁用和启用。

动态程序一般有两种实现方式,一是二进制方式,一是脚本方式。
二进制方式是先将我们编写的程序进行编译,变成机器可识别的指令代码(如.exe文件),然后再执行。这种编译好的程序我们只能执行、使用,却看不到他的程序内容。
脚本简单地说就是一条条的文字命令,这些文字命令是我们可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。
我们上面提到的各种动态语言,如ASP、PHP、CGI、JSP等,都是脚本语言。
按目前的服务规则,虚拟主机网站只能采用脚本语言来实现

脚本英文为Script。实际上脚本就是程序,一般都是有应用程序提供的编程语言。应用程序包括浏览器(javascript、VBScript)、多媒体创作工具,应用程序的宏和创作系统的批处理语言也可以归入脚本之类。脚本同我们平时使用的VB、C语言的区别主要是:
1、脚本语法比较简单,比较容易掌握;
2、脚本与应用程序密切相关,所以包括相对应用程序自身的功能;
3、脚本一般不具备通用性,所能处理的问题范围有限。

--------------------------------------------------------------------------------

脚本就是源程序,就是代码程序

--------------------------------------------------------------------------------

脚本英文为Script。实际上脚本就是程序,一般都是有应用程序提供的编程语言。应用程序包括浏览器(javascript、VBScript)、多媒体创作工具,应用程序的宏和创作系统的批处理语言也可以归入脚本之类

❾ 怎样用cmd执行vbs脚本,求简单实用命令

1、点击WIN按钮,在运行对话框下面输入cmd,打开命令提示符窗口。

❿ shell 脚本怎么调 shell

最简单的调试命令当然是使用echo命令。您可以使用echo在任何怀疑出错的地方打印任何变量值。这也是绝大多数的shell程序员要花费80%的时间来调试程序的原因。Shell程序的好处在于不需要重新编译,插入一个echo命令也不需要多少时间
shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试:

sh -x
strangescript

这将执行该脚本并显示所有变量的值。

shell还有一个不需要执行脚本只是检查语法的模式。可以这样使用:

sh -n your_script

这将返回所有语法错误。

linux/unix shell l脚本调试方法

Shell提供了一些用于调试脚本的选项,如下所示:

-n

读一遍脚本中的命令但不执行,用于检查脚本中的语法错误

-v
一边执行脚本,一边将执行过的脚本命令打印到标准错误输出

-x
提供跟踪执行信息,将执行的每一条命令和结果依次打印出来

使用这些选项有三种方法,一是在命令行提供参数

$ sh -x ./script.sh二是在脚本开头提供参数

#! /bin/sh -x第三种方法是在脚本中用set命令启用或禁用参数
#! /bin/sh
if [ -z "$1" ]; then
set -x
echo "ERROR: Insufficient
Args."
exit 1
set +x

热点内容
app什么情况下找不到服务器 发布:2025-05-12 15:46:25 浏览:714
php跳过if 发布:2025-05-12 15:34:29 浏览:467
不定时算法 发布:2025-05-12 15:30:16 浏览:131
c语言延时1ms程序 发布:2025-05-12 15:01:30 浏览:165
动物园灵长类动物配置什么植物 发布:2025-05-12 14:49:59 浏览:734
wifi密码设置什么好 发布:2025-05-12 14:49:17 浏览:148
三位数乘两位数速算法 发布:2025-05-12 13:05:48 浏览:397
暴风影音缓存在哪里 发布:2025-05-12 12:42:03 浏览:541
access数据库exe 发布:2025-05-12 12:39:04 浏览:628
五开的配置是什么 发布:2025-05-12 12:36:37 浏览:365