这篇博文是对Debugging Shell Scripts in Linux的翻译,希望能帮助到在Linux下写Shell脚本的童鞋。...大多数编程语言都有可用的调试工具,调试工具可用在执行程序或脚本的时候让你检查其内部是如何进行的。...对于Shell脚本,我们没有任何可用的调试工具,唯一有的是通过命令行的标识(-n,-v和-x)来辅助我们调试脚本。...通过使用-n标识,Shell不执行脚本中的命令,所以你可以很安全地检查你的脚本中是否包含语法错误。 下面的例子给出了如何使用-n标识。 例如该脚本文件名称为debug_quotes.sh #!...这对于我们查找脚本错误是非常有帮助的。
不幸的是外壳脚本和 C 程序一样难于调试,如同 C 一样,外壳命令也是假设你已经知晓了你正在做什么,只有在实际运行中有错误,它才会抛出一个错误提示。...除非外壳脚本经过完全的测试,否则 bug 可能存在几个月或几年直到有错的命令执行时,你才可能直到。对于专业的脚本开发人员具有脚本调试工具的扎实的知识是必不可少的。...外壳调试的特点 Bash 有几个开关和选项对于跟踪调试脚本是非常有用的。“ -n ”开关可以使你不用运行脚本就可以检查脚本语法的正确性。通常在开发期间使用这个开关来检查脚本的语法。...虽 然外壳脚本程序也许不会象我的作业那样使你的屏幕布满竖线并退出你的软盘,但是它们会很难调试。了解一些调试中用到的命令,会使你的调试更加容易并能更快 的找到和修复你的脚本程序。...外壳调试( Shell Debugging )选项 n -o errexit— 如果命令返回了错误码则终端外壳脚本的执行。
您可以使用Redis unstable来调试稍后在稳定版本的Redis中运行的脚本,因此调试器已经可用于实际术语。...在此模式下,服务器会阻止调试会话处于活动状态。 支持逐步执行。 支持静态和动态断点。 支持将调试脚本记录到调试器控制台中。 检查Lua变量。 跟踪由脚本执行的Redis命令。...restart- 调试会话将从头开始重新启动,从文件重新加载新版本的脚本。因此,正常的调试周期包括在调试之后修改脚本,并调用restart以便在新脚本更改时再次开始调试。...如果您使用continue以执行脚本直到下一个断点,则不会将命令转储到屏幕上以防止输出过多。 终止调试会话 当脚本自然终止时,调试会话结束并 redis-cli以正常的非调试模式返回。...正确显示表和嵌套表,以便为程序员调试脚本使值易于观察。
Chrome DevTools 提供了一系列实用的工具使得调试 JavaScript 应用不再是一件痛苦的事。...源面板允许你查看正在浏览的页面上所有的脚本。面板底部的图标按钮分别提供了标准的暂停、恢复以及逐条语句运行等操作。窗口底部还有一个按钮,在出现异常时可以强制暂停。...在不同选项卡中,Sources 都是可见的,而且只要点击 show-file-navigator 就可以打开文件定位并且显示全部脚本。...使用断点来调试 断点是在脚本中处于某种目的而停止或者暂停代码运行的地方。在 DevTools 中使用断点可以调试 JavaScript 代码, DOM 更新以及网络调用。...添加及删除断点 在源面板中,打开一份 JavaScript 文件用于调试。
提示: 脚本不是你写的或者windows下开发的脚本,你检查脚本明明没有问题,但就是执行出现错误,要想到执行dos2unix格式化下。 好习惯:每次写脚本都执行dos2unix格式化下。...-v:在执行脚本时,先将脚本的内容输出到屏幕上然后执行脚本,如果有错误也会给出错误提示 -x:将执行的脚本内容及输出显示屏幕上,这个是对调试很有用的参数。...使用set命令调试部分脚本内容 set命令可辅助脚本调试,以下是set命令常用的调试选项: set -n 读命令但并不执行 set -v 显示读取的所有行 set -x 显示所有命令及其参数。...提示: 1)同bash命令参数功能 2)开启调试功能通过set -x命令,而关闭调试功能通过set +x shell调试技巧小结 1)要记得首先用dos2unix 对脚本格式化 2)直接执行脚本根据报错来调试...,有时报错不准确 3)sh -x 调试整个脚本,显示执行过程(大海捞针困难) 4)set -x和set +x 调试部分脚本(脚本中设置) 5)echo 输出变量及相关内容,然后紧跟着exit退出,不执行后面程序的
使用adb的无线调试功能十分的方便。 但是实际工作中,总是要手动输入,十分麻烦。所以就把它写成脚本文件。...使用步骤 连接上USB 运行脚本文件(windows双击运行bat文件,mac的话terminal运行) 拔掉USB 这样就可以愉快的开始无线调试了~ 注意手机和电脑需要在一个无线局域网内!!...否则需要将脚本中的adb写成绝对路径。 运行成功,就会直接关掉窗口。运行失败,则不会自动关闭窗口。 因为没有找到可以直接接受命令返回的方法,所以执行过程中会产生两个临时文件。...(最后都会自动删除掉) bat脚本运行于windows,双击就可以运行。 shell脚本 adb_wifi.sh #!...否则需要将脚本中的adb写成绝对路径。 shell脚本不需要文件做中间变量就可以。 shell脚本的运行 必须先给对应的权限.然后运行。 chmod +x adb_wifi.sh .
这个脚本的单次执行时长在5分钟左右,我使用echo命令打印一些标志位的方法,查了大概半个小时吧,因为脚本内容实在是太长了,竟然定位不到问题。很是奇怪。...,就只有打印出来一个hello,world的功能,我们使用sh执行a.sh脚本的时候,会发现打印出来了想要的结果,如果想要更加详细的调试结果,那么就需要使用sh -x的方法了,可以看到,sh -x的方法可以打印出脚本执行的每一个步骤...“-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。...echo $a,$b sh a.sh hello + b=world + echo world world + set +x hello,world 可以看到,使用set的方法,我们可以动态的控制是否输出调试的过程...,这样就可以有针对性的去对脚本进行调试了。
在webstorm中新增调试程序 Run->Edit Configurations。 点弹出框左上的+号,然后选择nodejs。...然后运行这个任务即可进行grunt调试。 需要注意的是:一定要在对应要调试的js中打断点才能进入调试模式。可以在Applications parameters设置要运行的任务参数。
曾经我刚开始学习 shell 脚本时,除了知道用 echo 输出一些信息外,并不知道其他方法,仅仅依赖 echo 来查找错误,比较难调试且过程繁琐、效率低下。...本文介绍下我常用的一些 shell 脚本调试方法,希望能对 shell 的初学者有所帮助。 sh 命令调试选项(推荐) 从-c 后的字符串中读取命令。 使用方法: 字符串读取脚本。...检查脚本是否存在语法错误。 $ sh -n daodaotest.sh 跟踪调试 shell 脚本,将执行的每一条命令结果依次打印出来。.../bin/bash # 调试脚本示例 # 使用方法 usage() { echo "Usage: sh $0 COUNT PARAMETER" echo "\t COUNT 循环打印次数"...遍打印:daodaotest' 第 3 遍打印:daodaotest + (( i++ )) + (( i <= 3 )) exit 0 + exit 0 注:本人最常用-x参数,能解决 90% 的脚本调试问题
在编写shell脚本时,调试是个比较麻烦的事,特别是涉及到多层管道命令的时候,会产生多个中间结果,tee命令的作用是从标准输入中读取数据写入标准输出或文件中,利用它可以从管道中读取中间结果并写入本地临时文件中...,通过中间结果可以一步一步的定位到脚本的错误 例子 下面是一个简单的脚本,脚本中 processid 函数的作用是查询指定进程名字的进程ID,在管理linux服务器的过程中,这个是很常见的功能,processid...函数作用是利用多层管道命令查询进程ID,以下是测试脚本源码 #!...,其中 $0 表示脚本的名字 ( a.sh ) 验证 再次执行脚本,结果如下: [wanng@localhost ~]$ ....使用起来也非常方便和高效的,但是脚本一旦出问题调试就会变得困难起来,合理的使用 tee 命令输出管道的中间结果,可以快速的定位问题所在
Coredump 调试 Coredump是什么?...Linux环境下,当程序异常退出(发生段错误)时,会产生一个core文件,该文件记录了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成的一个文件...---- 如何调试 编译的时候添加-g选项,增加调试信息。 gdb program core_file **示例:**一个会产生异常退出的程序,非法指针访问。...执行调试命令,结果如下图所示。
GDB调试 GDB是GUN发布的一个强大的程序调试工具,也是Linux程序员不可或缺的一大利器。 安装GDB 注意安装你所需要的版本。...gcc -g hello.c -o hello 启动GDB调试。 gdb hello GDB和Shell一样支持命令补全。。...s ---- 监视变量 print 调试程序最基本的需求就是监视变量的值,可以使用print命令,缩写为p,显示指定变量的值。...bt ---- 退出GDB quit 调试完毕后,使用quit命令,缩写为q,退出gdb程序。 q
二、开始录制脚本 1....脚本录制如下,删除掉不要的脚本,然后进行调试 ? 9. 录制过程中,可能出现界面提示"您的连接不是私密连接",实际是需要更新jmeter的crt证书 ? 10....三、配置录制脚本排除和包含模式 实际录制脚本过程中,可能会录制到很多不需要的网站请求,或者一些不需要的js、css之类的请求,这时我们就可以通过排除和包含模式进行过滤请求,这样录制的脚本就会更加简洁,提高开发案例效率...有时候录制的脚本需要排除比如mongodb结尾的请求,如下图 ? 4. 正则表达式需要另起一行,如下所示,表示接口地址以mongodb结尾的都排除 .*mongodb ?...四、调试脚本 1. 添加debug sample用来调试,右键点击线程组》添加>Sample》Debug Sample ? 2. 添加查看结构树,右键点击线程组》监听器》察看结果树 ? 3.
bashdb下载地址 解压安装 bashdb是在linux环境下使用的,将资源下载下来后,解压上传到linux系统,再执行以下指令完成安装。.../configure make && make install 使用方式 bashdb -debug 脚本名 执行脚本后会进入到脚本内部,通过bashdb的一些列指令在执行过程中对脚本进行调试。...Shell命令 执行shell命令 3.控制脚本执行指令 n 执行下一条语句,遇到函数,不进入函数里面执行,将函数当作黑盒 s n 单步执行n次,遇到函数进入函数里面 b 行号n 在行号n处设置断点...del 行号n 撤销行号n处的断点 c 行号n 一直执行到行号n处 R 重新启动当前调试脚本 Finish 执行到程序最后 cond n expr 条件断点
以前在IDE调试的话,就很容易设置断点,查看参数值,到了 linux 下就变得比较麻烦了。 目前觉得比较重要的就是: 1.设置断点: gdb命令 break,也可以用 b 。...取消的话 undisplay 编号 4.列出信息 gdb命令 info,info break, info display 5.调试 单步调试 n,进入函数的单步调试 s,跳到下一个断点 c 6.读取文件
概述 在野的Powershell恶意脚本总是经过多重混淆、加密,直接静态分析难以得知脚本具体有什么恶意行为,所以需要对其进行动态调试。...目前最常用的Powershell调试器是ISE,但ISE没有较友好的调试窗口,使得调试脚本时效率低下,下面,将介绍使用VSCode实现远程调试Powershell脚本,帮助你提升解密分析Powershell...母体为一个bat脚本,主要功能就是执行一段base64加密后的Powershell脚本。 ? 解密后的代码,正是这个样本的核心代码,接下来就开始对其进行调试分析。 ?...然后将待调试的脚本放入虚拟机中,输入:psedit [虚拟机中的脚本路径],加载目标脚本。 ?...而VSCode作为微软开发的脚本IDE,对Powershell远程调试的功能是很完善的,大家可以通过VSCode远程调试功能,提升解混淆分析恶意Powershell脚本的效率。
循环 ls -1 *.fq.gz | xargs -n 2 ls -1 *.fq.gz | xargs -n 2 | while read {i,j};do echo $i,$j;done; # 生成脚本...-1 *.fq.gz | xargs -n 2 | while read {i,j};do echo "spades.py -1 $i -2 $j -o spades";done; # 生成更加完美的脚本...} echo "$PWD/{}" | xargs -n 2 | awk -F "/" '{print $6,$0}' | sed -e 's/_1.fq.gz//1' >reads.list #生成脚本...;else echo "no such file or dirctory";fi; #1 一个简单脚本 #/bin/bash a=$1 b=$2 if [ $a == $b ] then echo
个人整理一下常用的脚本,测速、面板、酸酸乳等 来源于各大博客,如有侵权,请联系本人:smile: 测速脚本 一键测速 wget -qO- bench.sh | bash SpeedTest wget -.../superspeed.sh ---- ZBench 服务器一键测试脚本 / 自带结果导出 wget wget -qO- –no-check-certificate https://raw.githubusercontent.com.../FunctionClub/ZBench/master/ZBench-CN.sh | bash ---- VPS安装脚本 宝塔面板 Centos安装命令: yum install -y wget &&
利用KGDB双机调试内核 1.1. 环境 1.2. 配置内核编译环境 2. 参考 双机调试Linux内核环境配置。...利用KGDB双机调试内核 环境 centos 7 VMware 全程使用root用户 配置内核编译环境 这种方式调试内核需要两台机器,一台用来运行Linux内核,另一台对内核进行调试。...可以开两个Linux系统的虚拟机;也可以在物理机系统是linux上面装虚拟机,然后虚拟机运行一个linux;再就是买开发板来调试内核。以下是在windows上开两个虚拟机的流程描述。...在https://www.kernel.org/ 下载想调试版本的内核代码(可以下载tarball格式)。...(我测试ttyS0不行,改成ttyS1可以了) 参考 http://blog.nsfocus.net/gdb-kgdb-debug-application/ 在VMware中用Kgdb调试linux内核
tee生成文件 Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。 tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。...generic-kuberouter-all-features.yaml sed -i "s;%CLUSTERCIDR%;$CLUSTERCIDR;g" generic-kuberouter-all-features.yaml 参考:Linux...ip1PRODUCTION_GO_IP=$(kubectl get pods -n production -o wide | grep Running | grep service-go | awk '{print $6}') 获取脚本的绝对路径...DIR1="`dirname $BASH_SOURCE`" MYDIR=`readlink -f "$DIR1"` 这样,无论在哪里执行该脚本,都可以获得该脚本的绝对路径 参考:linux awk命令详解
领取专属 10元无门槛券
手把手带您无忧上云