linux shell死了如何调试

linux shell死了如何调试,第1张

方法:

_hell提供了一些用于调试脚本的选项,如:

?1.-n :读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。

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

?3.-x :提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。该选项有三种常见的使用方法:

?1.在命令行提供参数。如:itcast@itcast$ sh -x ./script.sh

?2.在脚本开头提供参数。如:#! /bin/sh -x

_诮疟局杏_et命令启用或禁用参数。如:set -x 和 set +x分别表示启用和禁用-x参数,这样可以只对脚本中的某一段进行跟踪调试。

在 Linux 系统下面,不同的语言有不同的调试方法。如果是对用户自己编写的 C 语言源程序(*.c)进行调试,一般使用 gcc 编译器对 *.c 为后缀的源文件进行高级调试。例如:语法错误、数组越界错误、内存溢出错误等,但是这类错误,用户无法进行底层调试,只能够根据出错的原因,对源程序进行修改,然后再使用 gcc 编译器对源程序进行重新编译、运行;如果是对机器级的可执行代码进行底层调试,那还需要专门的对底层进行调试的工具软件才行。

(1)假设要debug的进程号为1000,运行如下命令:

$ gdb -p 1000

使用此命令即可使gdb附加到进程。

(2)载入libpython脚本

如果你的gdb是redhat或fedora等厂商修改过的,会有--python选项,使用此选项即可指定gdb启动时载入的Python扩展脚本(此脚本是扩展gdb的,不是我们需要debug的脚本)。

$ gdb --python /path/to/libpython .py -p 1000

如果安装的是GNU的gdb,就需要打开gdb后手动载入libpython.py脚本

(gdb) python

>import sys

>sys.path.insert(0, '/path/to/libpython.py' )

>import libpython

>end

(gdb)

这时就可以使用py-bt命令打印当前线程的Python traceback了。libpython还提供很多命令,例如py-print打印变量,py-locals打印所有本地变量等等,详细可打开libpython.py查看。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6181751.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-17
下一篇2023-03-17

发表评论

登录后才能评论

评论列表(0条)

    保存