【IC script】 不同脚本的调试方法

开头

IC中常用的脚本语言有python,perl,makefile,shell等。对于新接手的脚本,若要做一些小修小改,调试的方法除了加打印信息外,最便捷的方式就是单步调试了。
熟悉掌握一个脚本,不外乎两点 1:脚本的运行逻辑 2:脚本的数据结构和变量使用。 使用单步调试可以快速帮助我们熟悉一个复杂的脚本。
之前接触一个7K+行的perl脚本,当你需要关注其中某一个功能时,使用单步调试,可以从开始运行的第一行代码开始,追踪脚本运行这个功能时所走的分支,关注你所需的代码段。可以增加断点,随时的打印变量。
当然很多IDE拥有更加强大的调试功能,例如python的PyCharm。 但是IC公司的linux环境都是无法联网的,甚至有的连python的版本都是2.x的,更别奢求安装丰富的IDE了。
下面介绍下使用脚本内置的方式,不借助IDE的调试方法:

开始之前先看一下C语言的调试。不同语言,调试命令和调试方法大致相同,这里有一个完整的调试流程演示,帮助我们快速熟悉单步调试:🔗C语言入门-第 10 章 gdb

C

gcc -g main.c -o main生成包含源码信息的可执行文件main
gdb main进入debug shell
help:查看相关命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Python

在正常运行的方式上加上 -m pdb , 如 python -m pdb xxx.py -tc xxx
help得到相关命令:
在这里插入图片描述
help [cmd]显示命令的具体解释:
在这里插入图片描述
常用命令:

命令解释
b(reak)设置断点
c(ontinue)继续执行程序
l(ist)查看当前行的代码段
s(tep)进入函数
r(eturn)执行代码直到从当前函数返回
n(ext)执行下一行
pp打印变量的值
a(rgs)查看全部栈内变量
回车重复上一条命令
q(uit)退出
Perl

perl -d xxx.pl -tc xxx使用 -d进入debug模式。
h显示命令:
在这里插入图片描述
常用命令:

命令解释
n下一步,不可进入子程序
s单步,可进入子程序
rs进入子程序之后,按r可退出
p等同于print
x输出你要查看的变量的值,x \ %hash查看哈希
l列出将要执行的代码,
-列出当前代码前的源代码
c x告诉调试器运行到第x行后停下来
b x在指定x行或者子程序处设置断点
w设置观察点
回车n
q退出
shell

csh -- help bash -- help
针对于bashbash -x xxx.bash -tx xxx-x提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。(cshell使用方式一样)
设置环境变量export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]}:'在每一行前加上文件的行号,方便查看。

Makefile

make -f xxx.mk TC=xxxx -n-n不实际执行,但把规则和连带规则下的命令打印出来。方便查看Makefile的执行流程。
对于变量的查看,可以创建一个vars.mk

## vars.mk
 %:
	 @echo '$*=(*)'
d-%:
	 @echo '$*=(*)'
	 @echo '  origin = (origin*)'
	 @echo '  value = $(value  $*)'
	 @echo '  flavor = (flavor*)'

make -f xxx.mk TC=xxx -n -f var.mk d-TC 通过d-TC可以指定查看xxx.mk中的TC变量。

小结

对于Python,Perl,单步调试可以增加断点,随时打印变量。对于Bash, Makefile,不支持单步调试,只可以一次性打印出执行流程。更多功能,需要配合其他debugger工具使用。
对于SystemVerilog,需要Verdi配合仿真工具VCS进行单步调试,可以查看函数内的auto局部变量和堆栈结构,参考userguide.

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

劲仔小鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值