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

如何调试脚本

发布时间: 2023-05-16 11:13:43

1. 如何调试shell脚本各种方法都说说。

方法一:sh -x script.sh
-x选项会将运行到的脚本内容显示在屏幕上,前面有个+号。这样就知道哪句被执行到了。对调试很有帮助。

方法二:在脚本中使用debug开关
适用于只调试部分脚本的情况。
set -x
......(要调试的代码段)
set +x
然后sh script.sh运行脚本

方法三:在脚本中添加打印
比如搞个log输出函数,专门用于打印调试相关信息。
_log()
{
if [ "$_DEBUG" = "true" ]; then
echo "调试信息"
fi
}
只要在外面控制$_DEBUG开关即可。

2. 如何在 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

3. 如何调试lua脚本

调试lua现有的几种方案:
1)luaedit : 编辑断点和断点命中查看那些都让习惯用vs的人感到亲切,但是它只是在纯lua环境下的编辑器,也就是说和期望程序运行中能借用它来调试脚本可能性不大(至少我没有试验出来),能用上的需要给lua脚本做个main脚本函数,并提供一系列伪的c api(由lua实现的函数,只提供制定值的返回)。由luaedit启动脚本main函数进行调试
2)利用 lua debug 库中的 hook ,然后记录一张断点位置表,设置行模式的 hook ,每次进入 hook 都检查是否是断点处,若是就停下来等待交互调试。这个方法有效,但是很消耗 cpu 。因为每进入一个新的代码行,都需要回调一个函数。当这个函数本身又是用 lua 写的时候,效率更低。
3)利用lua脚本函数实现,在lua脚本中封装一个断点函数,这种方式结合debug库实现断点和栈信息,然后利用lua环境下的表对函数调用信息进行记录和打印,需要脚本使用者显式提供断点函数的调用。这个办法的优点自己可以组合出适合自己项目的断点调试方案。但缺点是相对繁琐,而且断点命中以后难以和现有方式融合

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

5. 如何调试LoadRunner脚本

VuGen 包含两个选项来帮助调试 Vuser 脚本:“分步运行”命令和断点。这些选

项不适用于 VBscript 和 VB 应用程序类型的 Vuser。

要查看“调试”工具栏,请执行下列操作:

右键单击工具栏区域,然后选择“调试”。“调试”工具栏将显示在工具栏区域

中。 “分步运行”命令

“分步运行”命令在运行脚本时一次运行一行。通过该命令,可以依次查看脚本

每一行的执行情况。

要分步运行脚本,请执行下列操作:

1 依次选择“Vuser” > “分步运行”,或者单击“调试”工具栏上的“步骤”按

钮。

VuGen 将执行脚本的第一行。

2 继续单击“步骤”按钮来执行该脚本,直到脚本运行完成为止。

断点

通过断点可以使脚本在特定位置暂停执行。它可用于在执行期间的预定点处检查

该脚本对应用程序的影响。要管理书签,请参阅第 186 页上的“断点管理器”。

要设置断点,请执行下列操作:

1 将光标置于脚本中要停止执行的行上。

2 依次选择“插入” > “切换断点”,或者单击“调试”工具栏上的“断点”按

钮。也可以按键盘上的 F9 键。将在脚本的左边距显示“断点”符号 ( )。

3 要禁用断点,请将光标置于包含断点符号的行上,然后单击“调试”工具栏上的

“启用 / 禁用断点”按钮。“断点”符号中将会显示一个白点 ( )。禁用一个断点

后,执行将在下一个断点处暂停。再次单击该按钮可以启用断点。

要删除断点,请将光标置于包含断点符号的行上,然后单击“断点”按钮或者按

F9 键。

要运行包含断点的脚本,请执行下列操作:

1 照常运行脚本。

到达断点时, VuGen 将暂停脚本的执行。可以检查脚本运行到断点时的效果,

并进行必要的更改,然后从断点处重新启动脚本。

2 要继续执行,请依次选择“ www.hnne.com Vuser” > “运行”。

重新启动后,脚本将继续执行,直到遇到下一个断点或脚本完成。

断点管理器

可以使用断点管理器来查看和管理断点。通过断点管理器您可以操纵脚本中的所

有断点。

要打开断点管理器,请选择“编辑” > “断点”。

要跳至脚本中的断点处,请执行下列操作:

1 从列表中选择一个断点。

2 单击“在脚本中突出显示”。则将在脚本中突出显示该行。

注意,每次只能突出显示一个断点。

管理断点

可以通过断点管理器添加、删除、禁用断点或者为断点设置条件

要添加断点,请执行下列操作:

1 单击“添加”。将打开“添加断点”对话框。

2 选择“操作”,并指定要添加断点的行号。

3 单击“确定”。该断点将被添加到断点列表中。

要删除断点,请执行下列操作:

1 要删除单个断点,请选择该断点并单击“删除”。

2 要立即删除所有断点,请单击“全部删除”。

要启用 / 禁用断点,请执行下列操作:

1 要启用断点,请在“操作”列内选中操作的复选框。

2 要禁用断点,请在“操作”列内清除操作的复选框。

通过断点管理器您可以将断点设置为在某些条件下暂停执行。

要为断点设置条件,请执行下列操作:

1 要在特定的迭代次数后暂停运行脚本,请选择“当迭代次数为下值时暂停”并输

入所需的数字。

2 要在参数 X 具有特定值时暂停脚本,请选择“当参数 X 值为下值时暂停”并输

入所需的值。有关参数的详细信息,请参阅第 8 章“使用 VuGen 参数”。

书签

当使用脚本视图时, VuGen 使您可以在脚本中各个不同的置放置书签。您可以

在书签之间导航来分析和调试代码。

要创建书签,请执行下列操作:

1 将光标置于所需的位置,然后按 Ctrl + F2 组合键。VuGen 会在脚本的左边距放

置一个图标。

2 要删除书签,请单击要删除的标签,然后按 Ctrl + F2 组合键。VuGen 将删除左

边距处的图标。

3 要在书签之间移动,请执行下列操作:

要移动到下一个书签,请按 F2 键。

要导航到上一个书签,请按 Shift + F2 组合键

您还可以通过“编辑” > “书签”菜单项来创建书签和在书签之间进行导航。

注意: 只能在当前操作中的书签之间导航。要导航到另一操作中的书签,请在左

窗格中选择该操作然后按 F2 键。

“转至”命令

要不使用书签在脚本中进行导航,可以使用“转至”命令。请依次选择“编辑”

> “转至行”并指定脚本的行号。在树视图中也支持此种导航。

如果要检查特定步骤或函数的“回放日志”消息,请在 VuGen 中选择该步骤,

然后依次选择“编辑” > “转至回放日志中的步骤”。VuGen 将把光标放置在

“输出”窗口的“回放日志”选项卡中的相应步骤处。

6. 如何调试Linux shell脚本

  1. 通过echo(也可以使用类似于c语言语法的printf)输出变量或者中间结果来判断是否执行符合预期,类似于我们写java程序时用system.out.printlen

  2. 使用“sh -x 脚本名称”。"-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个命令行显示出
    来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的是什么命令。

热点内容
安卓备忘录怎么转苹果去 发布:2025-07-14 20:57:16 浏览:114
加密货币app 发布:2025-07-14 20:46:57 浏览:553
医院防汛演练方案与脚本 发布:2025-07-14 20:41:11 浏览:777
公网ip做域服务器地址 发布:2025-07-14 20:40:13 浏览:52
php获取几 发布:2025-07-14 20:22:20 浏览:376
旧安卓如何刷入最新安卓 发布:2025-07-14 20:16:14 浏览:763
服务器或网络不给力是什么意思 发布:2025-07-14 20:15:36 浏览:318
爬网站数据库 发布:2025-07-14 20:15:20 浏览:520
邵雍的算法 发布:2025-07-14 20:13:49 浏览:119
离线烧录加密 发布:2025-07-14 20:12:13 浏览:620