精华内容
下载资源
问答
  • QTP脚本编辑器,可以在调试QTP脚本时使用,帮助查QTP脚本的问题 QTP脚本编辑器,可以在调试QTP脚本时使用,帮助查QTP脚本的问题
  • 绿色版的QuickTest Professional脚本调试器,QTP脚本调试
  • 性能测试PTS脚本调试指南,介绍了阿里云平台提供的PTS测试服务的想过脚本调试指南文档
  • 相信大家试过编写javascript脚本时发生这样或那样的错误,但是js并没有很好的调试方法,在这里介绍两个方法。
  • 比特币脚本调试实用程序。 这是一组用于调试或构造用于比特币的脚本的工具。 制备 Mac用户需要macOS命令行工具: xcode-select --install 和。 依存关系 btcdeb取决于以下内容: 的libtool libssl 自动配置 ...
  • 一、调试脚本 调试功能是每一种编程语言都应该实现的重要特性之一,当出现一些始料未及的情况时,用它来生成脚本的运行信息,调试信息可以帮你弄清楚是什么原因使得程序发生崩溃或者行为异常。 二、Bash内建调试功能...
  • LoadRunnerLoadrunner软件测试中LoadRunner脚本调试内容简介在脚本录制完成后或者手工编写脚本后,我们需要对脚本进行调试运行,脚本调试的过程类似于程序的调试,可以设置断点,按步骤执行等等;脚本调试作为脚本...
  • Microsoft Script Debugger是一款微软脚本调试器,它可以有效的帮助web开发者进行脚本的调式,软件支持设定中断点、逐步追踪脚本程序、设定书签、执行脚本指令等多种功能,是广大web开发者一个必备的辅助工具,需要...
  • Redis Lua脚本调试

    2019-09-26 19:34:01
    从版本3.2开始,Redis包含一个完整的Lua调试器,可以用来使编写复杂Redis脚本的任务更加简单。 由于Redis 3.2仍处于测试阶段,请unstable从Github下载Redis的分支并编译它以测试调试器。您可以使用Redis unstable来...
    Redis的

     

    从版本3.2开始,Redis包含一个完整的Lua调试器,可以用来使编写复杂Redis脚本的任务更加简单。

    由于Redis 3.2仍处于测试阶段,请unstable从Github 下载Redis 的分支并编译它以测试调试器。您可以使用Redis unstable来调试稍后在稳定版本的Redis中运行的脚本,因此调试器已经可用于实际术语。

    Redis Lua调试器,代号LDB,具有以下重要功能:

    • 它使用服务器 - 客户端模型,因此它是一个远程调试器。Redis服务器充当调试服务器,而默认客户端则是redis-cli。但是,可以通过遵循服务器实现的简单协议来开发其他客户端。
    • 默认情况下,每个新的调试会话都是分叉会话。这意味着在调试Redis Lua脚本时,服务器不会阻塞并可用于开发或者为了并行执行多个调试会话。这也意味着在脚本调试会话结束后回滚更改,因此可以使用与上一个调试会话完全相同的Redis数据集再次重新启动新的调试会话。
    • 可以根据需要使用备用同步(非分叉)调试模型,以便可以保留对数据集的更改。在此模式下,服务器会阻止调试会话处于活动状态。
    • 支持逐步执行。
    • 支持静态和动态断点。
    • 支持将调试脚本记录到调试器控制台中。
    • 检查Lua变量。
    • 跟踪由脚本执行的Redis命令。
    • Redis和Lua值的漂亮印刷。
    • 无限循环和长执行检测,模拟断点。

    快速开始

    开始使用Lua调试器的一个简单方法是观看此视频介绍:

    重要说明:请确保使用Redis生产服务器避免调试Lua脚本。请改用开发服务器。另请注意,使用同步调试模式(这不是默认设置)会导致Redis服务器阻塞调试会话持续的所有时间。

    要使用redis-cli以下步骤启动新的调试会话:

    1. 使用首选编辑器在某个文件中创建脚本。假设您正在编辑位于的Redis Lua脚本/tmp/script.lua
    2. 启动调试会话:

      ./redis-cli --ldb --eval /tmp/script.lua

    请注意,通过--eval选项,redis-cli您可以将键名和参数传递给脚本,并以逗号分隔,如下例所示:

    ./redis-cli --ldb --eval /tmp/script.lua mykey somekey , arg1 arg2
    

    您将进入一个redis-cli不再接受其正常命令的特殊模式,而是打印一个帮助屏幕并将未修改的调试命令直接传递给Redis。

    唯一没有传递给Redis调试器的命令是:

    • quit - 这将终止调试会话。这就像删除所有断点并使用continuedebugging命令一样。此外,命令将退出redis-cli
    • restart- 调试会话将从头开始重新启动,从文件重新加载新版本的脚本。因此,正常的调试周期包括在调试之后修改脚本,并调用restart以便在新脚本更改时再次开始调试。
    • help - 此命令传递给Redis Lua调试器,该调试器将打印如下命令列表:
    lua debugger> help
    Redis Lua debugger help:
    [h]elp               Show this help.
    [s]tep               Run current line and stop again.
    [n]ext               Alias for step.
    [c]continue          Run till next breakpoint.
    [l]list              List source code around current line.
    [l]list [line]       List source code around [line].
                         line = 0 means: current position.
    [l]list [line] [ctx] In this form [ctx] specifies how many lines
                         to show before/after [line].
    [w]hole              List all source code. Alias for 'list 1 1000000'.
    [p]rint              Show all the local variables.
    [p]rint <var>        Show the value of the specified variable.
                         Can also show global vars KEYS and ARGV.
    [b]reak              Show all breakpoints.
    [b]reak <line>       Add a breakpoint to the specified line.
    [b]reak -<line>      Remove breakpoint from the specified line.
    [b]reak 0            Remove all breakpoints.
    [t]race              Show a backtrace.
    [e]eval <code>       Execute some Lua code (in a different callframe).
    [r]edis <cmd>        Execute a Redis command.
    [m]axlen [len]       Trim logged Redis replies and Lua var dumps to len.
                         Specifying zero as <len> means unlimited.
    [a]abort             Stop the execution of the script. In sync
                         mode dataset changes will be retained.
    
    Debugger functions you can call from Lua scripts:
    redis.debug()        Produce logs in the debugger console.
    redis.breakpoint()   Stop execution as if there was a breakpoint in the
                         next line of code.
    

    请注意,启动调试器时,它将以步进模式启动。它将停止在脚本的第一行,它在执行之前实际执行某些操作。

    从这一点开始,您通常会调用step以执行该行并转到下一行。在您执行步骤时,Redis将显示服务器执行的所有命令,如以下示例所示:

    * Stopped at 1, stop reason = step over
    -> 1   redis.call('ping')
    lua debugger> step
    <redis> ping
    <reply> "+PONG"
    * Stopped at 2, stop reason = step over
    

    <redis><reply>线示出通过仅执行的行执行的命令,以及来自服务器的答复。请注意,这仅在步进模式下发生。如果您使用continue以执行脚本直到下一个断点,则不会将命令转储到屏幕上以防止输出过多。

    终止调试会话

    当脚本自然终止时,调试会话结束并 redis-cli以正常的非调试模式返回。您可以像往常一样使用该restart命令重新启动会话。

    停止调试会话的另一种方法是redis-cli 通过按下手动中断Ctrl+C。请注意,也无论如何打破之间的连接redis-cliredis-server将中断调试会话。

    关闭服务器时,所有分叉的调试会话都将终止。

    缩写调试命令

    调试可能是一个非常重复的任务。因此,每个Redis调试器命令都以不同的字符开头,您可以使用单个初始字符来引用该命令。

    因此,例如,step您可以输入而不是键入s

    断点

    如在线帮助中所述,添加和删除断点很简单。只需使用b 1 2 3 4在第1,2,3,4行添加b 0断点。该命令将删除所有断点。可以使用as参数删除选定的断点,即我们要删除的断点所在的行,但前缀为减号。例如b -3,从第3行中删除断点。

    请注意,将断点添加到Lua从不执行的行(如声明局部变量或注释)将不起作用。断点将被添加,但由于脚本的这部分将永远不会被执行,程序将永远不会停止。

    动态断点

    使用该breakpoint命令可以将断点添加到特定行中。但是,有时我们只想在发生特殊情况时才停止执行程序。为此,您可以使用redis.breakpoint()Lua脚本中的 函数。调用时,它会模拟下一行中将要执行的断点。

    if counter > 10 then redis.breakpoint() end
    

    此功能在调试时非常有用,因此我们可以避免多次手动继续执行脚本,直到遇到给定条件。

    同步模式

    如前所述,但默认LDB使用分叉会话来回滚脚本在调试时所操作的所有数据更改。在调试期间,确定性通常是一件好事,因此可以启动连续的调试会话,而无需将数据库内容重置为其原始状态。

    但是,为了跟踪某些错误,您可能希望保留每个调试会话对密钥空间执行的更改。当这是一个好主意,你应该使用一个特殊的选项,启动调试器ldb-sync-moderedis-cli

    ./redis-cli --ldb-sync-mode --eval /tmp/script.lua
    

    请注意,在此模式下在调试会话期间无法访问Redis服务器,因此请小心使用。

    在此特殊模式下,该abort命令可以使操作中的更改中途停止脚本到数据集。请注意,与正常结束调试会话相比,这是不同的。如果你只是中断redis-cli脚本将完全执行,然后会话终止。相反,abort您可以在中间中断脚本执行,并在需要时启动新的调试会话。

    从脚本记录

    redis.debug()命令是一个功能强大的调试工具,可以在Redis Lua脚本中调用,以便将内容记录到调试控制台中:

    lua debugger> list
    -> 1   local a = {1,2,3}
       2   local b = false
       3   redis.debug(a,b)
    lua debugger> continue
    <debug> line 3: {1; 2; 3}, false
    

    如果脚本在调试会话之外执行,redis.debug()则根本不起作用。请注意,该函数接受多个参数,这些参数由输出中的逗号和空格分隔。

    正确显示表和嵌套表,以便为程序员调试脚本使值易于观察。

    使用print和检查程序状态eval

    虽然redis.debug()可以使用该函数直接从Lua脚本中打印值,但通常在步进或停止到断点时观察程序的局部变量很有用。

    print命令就是这样,并在调用帧中执行查找,从当前的一个回到之前的一个,直到顶层。这意味着即使我们进入Lua脚本中的嵌套函数,我们仍然可以使用print foo查看foo调用函数的上下文中的值。在没有变量名称的情况下调用时,print将打印所有变量及其各自的值。

    eval命令在当前调用帧的上下文之外执行小块Lua脚本(使用当前Lua内部结构无法在当前调用帧的上下文中进行评估)。但是,您可以使用此命令来测试Lua函数。

    lua debugger> e redis.sha1hex('foo')
    <retval> "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
    

    调试客户端

    LDB使用客户端 - 服务器模型,其中Redis服务器充当使用RESP进行通信的调试服务器。虽然redis-cli是默认的调试客户端,但只要满足以下条件之一,任何客户端都可用于调试:

    1. 客户端提供本机接口,用于设置调试模式和控制调试会话。
    2. 客户端提供了一个通过RESP发送任意命令的接口。
    3. 客户端允许将原始消息发送到Redis服务器。

    例如,Redis的插件用于ZeroBrane工作室使用LDB集成Redis的-卢阿。以下Lua代码是插件如何实现的简化示例:

    local redis = require 'redis'
    
    -- add LDB's Continue command
    redis.commands['ldbcontinue'] = redis.command('C')
    
    -- script to be debugged
    local script = [[
      local x, y = tonumber(ARGV[1]), tonumber(ARGV[2])
      local result = x * y
      return result
    ]]
    
    local client = redis.connect('127.0.0.1', 6379)
    client:script("DEBUG", "YES")
    print(unpack(client:eval(script, 0, 6, 9)))
    client:ldbcontinue()
    

     

    转载于:https://www.cnblogs.com/sunsky303/p/9629785.html

    展开全文
  • KScriptDbg4是Perl和Python脚本调试器的GUI。 此GUI是移植到Protoeditor的KDE4 / Qt4的结果,Protoeditor是Thiago Silva基于1.1beta3版本开发的项目。 它提供了调试器的主要功能:设置断点,逐步运行脚本,输入函数...
  • Linux脚本调试前言bash自身特性-v-n-x-x的增强$LINENO$FUNCNAME$[PS4](https://blog.51cto.com/kusorz/1968827)功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码...

    前言

    Linux的shell脚本上手简单但是调试起来就颇为麻烦,二者间的抉择就像编辑器上轻量级与功能丰富的不可兼得一般。在这里提出一些Linux上脚本调试的小技巧,希望有所帮助。

    bash自身特性

    众所周知,bash相对于dash而言是更重量级的存在,其中一部分便是这种调试辅助信息。以下的特性都是在bash上验证的,dash下无说明便是没有测试过。
    了解一个命令的最好办法自然是man手册:man bash
    手册本身命令很多,这次只介绍几个我常用的参数:

    -v

    一边执行脚本,一边将执行过的脚本命令打印。
    注意: 脚本命令本身是被定义到标准错误输出打印,而真实结果是在标准输出打印。
    在这里插入图片描述

    -n

    读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
    注意:这里的检查主要是针对语法格式缺少(例如,if语句少了then),但是还有很多是没有检查的(比如,if语句没加空格、函数未定义)。

    -x

    提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。这个的功能超级强大,将会重点介绍。

    1. 如果有多个脚本嵌套关系,可以进入次级脚本检查(比如a.sh调用b.sh,b.sh调用c.sh,只会显示a.sh和b.sh的内容)

      所以最好是哪个脚本想追踪就在哪个脚本里加上set -x。

    2. 行首显示+,+后面显示经过替换之后的命令行内容,有助于分析实际执行的是什么命令。++代表函数或脚本进一步的调用。

    示例:

    	root@hik-PC:/tmp# cat test.sh 
    	#!/bin/bash
    	echo 111 
    	SER="/usr/lib/dconf/dconf-service"
    	fun(){
    	pp=`ps -ef | grep $SER`
    	}
    	fun
    	bash a.sh
    	
    	root@hik-PC:/tmp# cat a.sh 
    	#!/bin/bash
    	echo aaa
    	dd=`ps -ef |grep a.sh`
    	
    	root@hik-PC:/tmp# bash -x test.sh 
    	+ echo 111
    	111
    	+ SER=/usr/lib/dconf/dconf-service
    	+ fun
    	++ ps -ef
    	++ grep /usr/lib/dconf/dconf-service
    	+ pp='hikvisi+  3348  3016  0 5月13 ?       00:00:00 /usr/lib/dconf/dconf-service
    	root     32422 32420  0 11:22 pts/1    00:00:00 grep /usr/lib/dconf/dconf-service'
    	+ bash a.sh
    	aaa
    

    -x的增强

    $LINENO

    代表shell脚本的当前行号

    $FUNCNAME

    函数的名字,它是一个数组变量,其中包含了整个调用链上所有的函数的名字,所以变量${FUNCNAME[0]}代表shell脚本当前正在执行的函数的名字,而变量${FUNCNAME[1]}则代表调用函数${FUNCNAME[0]}的函数的名字,余者可以依此类推。

    $PS4

    $PS4的值将被显示在“-x”选项输出的每一条命令的前面,在Bash Shell中,缺省的$PS4的值是"+"号。所以默认执行bash -x时前面有“+”号。进一步介绍,可以参照上面我的参考文献。

    示例:

    	root@hik-PC:/tmp# cat -n test.sh 
    	     1	#!/bin/sh
    	     2	export PS4='+$LINENO: {${FUNCNAME[0]}}'
    	     3	echo 111 
    	     4	SER="/usr/lib/dconf/dconf-service"
    	     5	fun(){
    	     6		pp=`ps -ef | grep $SER`
    	     7	}
    	     8	funn(){
    	     9		fun
    	    10	}
    	    11	funn
    	    12	bash a.sh
    	root@hik-PC:/tmp# bash -x test.sh 
    	+ export 'PS4=+$LINENO: {${FUNCNAME[0]}}'
    	+ PS4='+$LINENO: {${FUNCNAME[0]}}'
    	+3: {}echo 111
    	111
    	+4: {}SER=/usr/lib/dconf/dconf-service
    	+11: {}funn
    	+9: {funn}fun
    	++6: {fun}ps -ef
    	++6: {fun}grep /usr/lib/dconf/dconf-service
    	+6: {fun}pp='hikvisi+  3348  3016  0 5月13 ?       00:00:00 /usr/lib/dconf/dconf-service
    	root      5476  5474  0 13:55 pts/1    00:00:00 grep /usr/lib/dconf/dconf-service'
    	+12: {}bash a.sh
    	aaa
    

    最后,这些命令有多种实现方式:

    • 命令行:bash -x xx.sh
    • 在脚本开头提供参数#!/bin/bash -x
    • 脚本中,set -x (启用) / set +x (禁用)

    trap

    定义:用于捕获指定的信号并执行预定义的命令。
    语法:trap ‘command’ signal
    注意:

    • signal主要使用shell内部的伪信号(exit,err,debug
      debug是脚本中每一条命令执行之前),很多资料也写可以捕获系统信号,但没有测试过。
    • dash没有这种伪信号,所以必须用bash。

    示例:

    root@hik-PC:/tmp# cat -n trap.sh 
         1	#!/bin/bash
         2	trap 'echo “before execute line:$LINENO, a=$a,b=$b,c=$c”' DEBUG
         3	a=1
         4	if [ "$a" -eq 1 ]
         5	then
         6	     b=2
         7	else
         8	     b=1
         9	fi
        10	c=3
        11	echo "end"
    
    root@hik-PC:/tmp# bash trap.sh 
    “before execute line:3, a=,b=,c=”
    “before execute line:4, a=1,b=,c=”
    “before execute line:6, a=1,b=,c=”
    “before execute line:10, a=1,b=2,c=”
    “before execute line:11, a=1,b=2,c=3”
    end
    

    调试钩子

    用途:当测试环境和部署环境不同时,不同的要求和判定能把人折磨疯,利用export DEBUG=true既可以执行判断语句内内容,不用一条条删语句了。
    示例:

    if [$DEBUG= “true” ]; then
    echo “debugging”  #此处可以输出调试信息
    fi
    

    bashdb

    bashdb是一个类GDB的调试工具,可以完成对shell脚本的断点设置,单步执行,变量观察等许多功能。

    使用bashdb进行debug的常用命令:

     1. 列出代码和查询代码类:
        l  列出当前行以下的10行
        \-  列出正在执行的代码行的前面10行
        .  回到正在执行的代码行
        w 列出正在执行的代码行前后的代码
        /pat/ 向后搜索pat
        ?pat?向前搜索pat
    
     2. Debug控制类:
        h 帮助
        help 命令 得到命令的具体信息
        q 退出bashdb
        x 算数表达式 计算算数表达式的值,并显示出来
        !!空格Shell命令 参数 执行shell命令
        使用bashdb进行debug的常用命令(cont.)
        控制脚本执行类:
        n  执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒
        s n 单步执行n次,遇到函数进入函数里面
        b 行号n 在行号n处设置断点      
        (经验证,bashdb的break设置断点命令必须s、s、c然后到这个断点以后,还得重新设置下一个断点,否则不生效,===>即再次s、s、c才行)
        del 行号n 撤销行号n处的断点
        c 行号n 一直执行到行号n处
        R 重新启动
        Finish 执行到程序最后
        cond n expr 条件断点
    
    展开全文
  • btcdeb比特币脚本调试实用程序。 这是一组用于调试或构建用于比特币的脚本的工具。 准备工作Mac用户需要macOS命令行工具:xcode-select --install和Homebr btcdeb比特币脚本调试实用程序。 这是一组用于调试或构建...
  • 调试模式运行脚本 通过bash -x [removed]的方式可以在调试模式下运行整个脚本, bash会在在运行前打印出了每一行命令, 而且每行前面用+号表明命令的嵌套层数. > bash -x debug.sh + echo 'First line' First line...
  • 打开ie->工具菜单->inter选项->高级选项卡->去掉“禁止脚本调试"选项 2,打开vs.net,创建一个新的asp.net项目(或打开一个) 3,运行你要调试的页面 4,当你的页面呈现在ie里的时候,重新回到vs.net 5,在脚本中设置断点:
  • QTP10.0安装所遇问题-脚本调试器问题

    千次阅读 2020-06-02 15:59:27
    安装QTP10过程中,有提示脚本调试器没有下载成功 解决办法如下: 此时需要下载“scd10en.exe”,有需要的请私信qq:1462264013 值得注意的是点击运行“scd10en.exe”时要以管理员身份运行,才可成功。 然后再次...

    安装QTP10过程中,有提示脚本调试器没有下载成功
    解决办法如下:
    在这里插入图片描述
    在这里插入图片描述
    此时需要下载“scd10en.exe”,有需要的自取:
    链接:https://pan.baidu.com/s/195hEKOPbpp37okysutcqEQ
    提取码:33ma
    值得注意的是点击运行“scd10en.exe”时要以管理员身份运行,才可成功。
    在这里插入图片描述
    在这里插入图片描述
    然后再次按照提示打开进行安装:
    在这里插入图片描述
    进行运行安装
    在这里插入图片描述
    安装成功!

    展开全文
  • shell脚本调试工具的安装和使用

    千次阅读 2019-03-20 10:00:05
    目前在查看Android源码时候发现有很多shell脚本,由于方便我自己去调试脚本,就去查找了下脚本调试工具 bashdb ,如果大家之前使用过 gdb 的调试工具可以很容易的掌握,下面是我对常用命令的使用心得分享,更详细的内容...

    前言

    目前在查看Android源码时候发现有很多shell脚本,由于方便我自己去调试脚本,就去查找了下脚本调试工具bashdb,如果大家之前使用过gdb的调试工具可以很容易的掌握,下面是我对常用命令的使用心得分享,更详细的内容可以查看文章末尾提供的链接,有官网的参考文档可以给大家学习。

    1.安装

    这里我的环境是Mac的安装步骤,其他平台安装请自行google。

    注意:下载过程可能需要翻墙

    2.使用bashdb

    • 别名显示
      我们再调试的时候,可以进行别名显示,方便我们使用。
    bashdb<0> show alias
      cont: continue    |  fin: finish   |  list>: list  |  h: help
      q!: quit          |  !: history    |  x: examine   |  ev: eval
      bash: shell       |  exit: quit    |  ed: edit     |  eval?: eval
      ?: help           |  W: watch      |  s: step      |  d: clear
      where: backtrace  |  T: backtrace  |  sh: shell    |  c: continue
      s-: step-         |  R: run        |  q: quit      |  b: break
      s+: step+         |  pr: print     |  n: next      |  a: action
      bt: backtrace     |  restart: run  |  l: list
      l>: list          |  ev?: eval     |  i: info
    

    2.1 准备调试脚本

    • 创建debug.shshell脚本准备调试
    #!/bin/bash
    function print
    {
        for test in Alabama Alaska Arizona Arkansas California Colorado
        do
            echo The next state is $test
        done
    }
    function getdate
    {
        echo date +'%Y-%m-%d'
    }
    echo "Hello $USER,"
    echo "Today is $(getdate)"
    

    2.2 进入调试模式

    • 命令
    bashdb <调试文件>
    
    • 日志
    MartindeMacBook-Pro:android_shell martin$ bashdb debug.sh
    bash debugger, bashdb, release 4.4-0.94
    
    Copyright 2002-2004, 2006-2012, 2014, 2016-2017 Rocky Bernstein
    This is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    
    (/Users/martin/Workspace/Linux/android_shell/debug.sh:13):
    13:	echo "Hello $USER,"
    bashdb<0>
    

    2.3 查看程序

    • 命令
      在待输入光标区域输入l查看被调试的shell脚本(这里的l是指list单词)。在l后面可以直接跟行号显示
    bashdb<0> l 行号
    
    • 日志
    bashdb<1> l 1
      1:    #!/bin/bash
      2:    function print
      3:    {
      4:        for test in Alabama Alaska Arizona Arkansas California Colorado
      5:        do
      6:            echo The next state is $test
      7:        done
      8:    }
      9:    function getdate
     10:    {
    

    如果shell脚本文件过长会以分页的方式显示,我们可以点击Enter键进行翻页操作。

    2.4 断点相关操作

    2.4.1查看断点信息

    • 命令
      在带输入区域输入i b(这里是info break的缩写)。
    bashdb<2>  i b
    
    • 日志
    bashdb<2>  i b
    No breakpoints have been set.
    

    上面表示没有打过任何断点。

    2.4.2 b(reak) 行号

    • 命令
    bashdb<3> b 2
    
    • 日志
    bashdb<3> b 6
    Breakpoint 2 set in file /Users/martin/Workspace/Linux/android_shell/debug.sh, line 6.
    

    2.4.3 b(reak) 函数名

    • 命令
    bashdb<2> b <函数名>
    
    • 日志
    bashdb<2> b getdate
    Breakpoint 1 set in file /Users/martin/Workspace/Linux/android_shell/debug.sh, line 2.
    

    2.4.4 b(reak) 行号 if 条件

    • 命令
    bashdb<0> b if $test==Alabama
    
    • 日志
    bashdb<2> l 1
      1:    #!/bin/bash
      2:    function print
      3:    {
      4:        for test in Alabama Alaska Arizona Arkansas California Colorado
      5:        do
      6:            echo The next state is $test
      7:        done
      8:    }
      9:    function getdate
     10:    {
    bashdb<3> b 6 if$test==Alabama
    Breakpoint 1 set in file /Users/martin/Workspace/Linux/android_shell/debug.sh, line 6.
    

    2.5 删除断点

    2.5.1 d(elete)

    • 命令
      在删除断点的时候,我们需要先查看一下当前断点的所在行号,然后删除断点行号即可。
    bashdb<4> d 2
    
    • 日志
    bashdb<8> i b
    Num Type       Disp Enb What
    2   breakpoint keep y   /Users/martin/Workspace/Linux/android_shell/debug.sh:2
    3   breakpoint keep y   /Users/martin/Workspace/Linux/android_shell/debug.sh:10
    bashdb<9> d 10
    Removed 1 breakpoint(s).
    bashdb<10> i b
    Num Type       Disp Enb What
    2   breakpoint keep y   /Users/martin/Workspace/Linux/android_shell/debug.sh:2
    

    2.3 运行

    r(run):运行脚本

    bashdb<1> run
    
    • 日志
    bashdb<9> run
    Restarting with: /usr/local/bin/bashdb debug.sh
    bash debugger, bashdb, release 4.4-0.94
    
    Copyright 2002-2004, 2006-2012, 2014, 2016-2017 Rocky Bernstein
    This is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    
    (/Users/martin/Workspace/Linux/android_shell/debug.sh:13):
    13:	echo "Hello $USER,"
    

    c(ontinue):继续运行到下一个断点

    bashdb<0> c
    
    • 日志
    bashdb<0> c
    Hello martin,
    Today is date +%Y-%m-%d
    Debugged program terminated normally. Use q to quit or R to restart.
    

    q(quit):退出当前程序

    • 命令
    bashdb<1> q
    
    • 日志
    bashdb<1> q
    bashdb: That's all, folks...
    

    2.5 单步调试

    n(next)

    step over:如果正在调用一个子函数,不会跟到函数内部

    • 命令
    bashdb<0> n
    
    • 日志
    bashdb<0> n
    Hello martin,
    (/Users/martin/Workspace/Linux/android_shell/debug.sh:14):
    14:	echo "Today is $(getdate)"
    

    s(step)

    step into:如果正在调用一个子函数,不会跟到函数内部

    • 命令
    bashdb<0> s
    
    • 日志
    bashdb<1> s
    (/Users/martin/Workspace/Linux/android_shell/debug.sh:14):
    14:	echo "Today is $(getdate)"
    getdate
    

    f(finish)

    step return:如果正在调用一个子函数,并且进入函数内部,会退出到喊出。

    • 命令
    bashdb<(2)> finish
    
    • 日志
    bashdb<(2)> finish
    Today is date +%Y-%m-%d
    Debugged program terminated normally. Use q to quit or R to restart.
    

    2.6 打印值

    p(print)

    用于打印当前变量的值

    • 命令
    bashdb<6> pr <打印的变量>
    
    • 日志
    Hello martin,
    (/Users/martin/Workspace/Linux/android_shell/debug.sh:14):
    14:	echo "Today is $(getdate)"
    bashdb<6> pr $USER
    martin
    

    w(watch)

    监控当前变量的值,当有值发生改变的时候,就改变值。

    • 命令
    bashdb<1> watch <变量名称不带$号>
    
    • 日志
    bashdb<1> watch USER
     0: ($USER)==martin arith: 0
    bashdb<2> n
    

    参考链接

    展开全文
  • VB调试脚本工具

    2018-01-02 15:42:08
    本工具运用QTP脚本调试,可在写完VB脚本运行的时候调试方便使用,可以更高效开发和发现问题
  • linux运维学习笔记:Shell脚本调试
  • lr脚本调试

    2011-10-29 10:05:32
    loadrunner性能测试的一些列讲解,通过这部资料的学习可以快速掌握loadrunner压力测试的基本流程和重要环节
  • LoadRunner脚本调试

    2013-04-03 09:16:55
    在脚本录制完成后或者手工编写脚本后,我们需要对脚本进行调试运行,脚本调试的过程类似于程序的调试,可以设置断点,按步骤执行等等;脚本调试作为脚本开发的一个重要的过程,是非常重要的,只有通过调试的脚本才能...
  • 【linux】shell脚本调试技术

    千次阅读 2018-09-08 02:21:06
    在使用gcc编译keepalived源码的时候,需要运行configure生成Makefile,然后用make命令编译。但是在这个过程中,configure文件却一直无法扫描到一个已经安装的三方库。...Shell脚本调试技术 测试脚本t...
  • shell脚本调试方法

    千次阅读 2016-03-17 14:54:24
    脚本调试的主要工作就是发现引发脚本错误的原因以及在脚本源代码中定位发生错误的行,常用的手段包括分析输出的错误信息,通过在脚本中加入调试语句,输出调试信息来辅助诊断错误,利用调试工具等。但与其它高级语言...
  • shell脚本调试

    千次阅读 2018-08-24 17:21:25
    Shell 脚本调试方法 我们在使用 Unix-like 系统时, shell编程是必不可少的, 在编写shell脚本的时候也不可避免会产生bug, 所以我们就需要学习shell脚本的调试方法. 1. 直接调试 何为直接调试, 相信大家在编写c...
  • 在IE10中已经新加入了Error.stack 的支持,可以加快开发人员的脚本调试,并更正错误。尤其是一些难以重现的错误,如异步操作等
  •     每当调试项目时,都是重新打开一个浏览器窗口,而且关闭调试后,也会关闭窗口,...如何关闭Chrome脚本调试呢? 解决办法: 工具 =》 选项 =》调试 =》 常规 =》启用APS.NET 的 Javascript 调试(Chrome和I...
  • Unity lua脚本调试

    千次阅读 2019-11-29 10:07:47
    原生的lua代码调试支持的工具很多, 这里主要说的是能Attach到Unity进程交互调试的工具。 大多游戏都在使用lua脚本来热更新游戏逻辑,下面介绍两个工具如何调试lua,介绍的两款lua调试工具都支持以下特性: 自动...
  • shell脚本调试技术

    2013-03-03 18:11:49
    详细介绍了shell脚本调试技术,对编写shell时很有指导意义

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 282,105
精华内容 112,842
关键字:

脚本调试