如何调试Linux shell脚本

如何调试Linux shell脚本,第1张

方法一:

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

方法二:在脚本中使用debug开关适用于只调试部分脚本的情况。

set -x

搜索……(要调试的代码段)

set +x

然后sh scriptsh运行脚本

方法三:

在脚本中添加打印比如搞个log输出函数,专门用于打印调试相关信息。

_log(){

if [ “$_DEBUG” = “true” ]; then

echo “调试信息”

fi

}只要在外面控制$_DEBUG开关即可。

你是说软件的调试么?

应用程序的话,最常用的就是使用 printf 直接打印,经常需要搭配 #if #endif 之类的预处理。

问题大致定位好之后,可以使用 gdb ,可以本地调,也可以交叉调。

如果你想直接通过你的主机(装有 windows 或 Linux 的x86机器),来单步跟踪

调试你跑在 arm 板子上的诸如 bootloader 之类的裸机程序的话,那一般就需要

在你的主机和板子之前连接一个 dongle 或者适配器,诸如 J-Link 或 Wiggler 小板之类的东西,

然后在主机这边跑一个代理软件即可。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////

就专业程度和实在程度而言,杭州巨立安(JulianTec)

是您在arm架构下学习嵌入式Linux研发的上佳指导!

Linux调试程序大多数都是喜欢用gdb,gdb是一个命令行界面的程序调试工具,任何调试 *** 作都是输入命令来实现的。从Windows过来的程序员可能不习惯用gdb这个调试器,可以去试试一些图形界面的的调试器,比如Kgdb、Affinic GUI Debugger,这两款调试器虽然是图形界面的调试器,但是它其实是调用gdb来完成它的调试功能的,也就是说它们其实是gdb的一个图形界面的外壳,所以要先安装好gdb再安装它们,不习惯gdb的命令界面的话,可以试试这两款软件。

follow-fork-mode

在2560版Linux内核及以后,GDB对使用fork/vfork创建子进程的程序提供了follow-fork-mode选项来支持多进程调试。

follow-fork-mode的用法为:

set follow-fork-mode [parent|child]

parent: fork之后继续调试父进程,子进程不受影响。

child: fork之后调试子进程,父进程不受影响。

因此如果需要调试子进程,在启动gdb后:

(gdb) set follow-fork-mode child

并在子进程代码设置断点。

此外还有detach-on-fork参数,指示GDB在fork之后是否断开(detach)某个进程的调试,或者都交由GDB控制:

set detach-on-fork [on|off]

on: 断开调试follow-fork-mode指定的进程。

off: gdb将控制父进程和子进程。follow-fork-mode指定的进程将被调试,另一个进程置于暂停(suspended)状态。

注意,最好使用GDB 66或以上版本,如果你使用的是GDB64,就只有follow-fork-mode模式。

follow-fork-mode/detach-on-fork的使用还是比较简单的,但由于其系统内核/gdb版本限制,我们只能在符合要求的系统上才能使用。而且,由于follow-fork-mode的调试必然是从父进程开始的,对于fork多次,以至于出现孙进程或曾孙进程的系统,例如上图3进程系统,调试起来并不方便。

以上就是关于如何调试Linux shell脚本全部的内容,包括:如何调试Linux shell脚本、开发嵌入式LINUX有哪些具体调试方法、linux下调试程序用什么工具等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9485173.html

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

发表评论

登录后才能评论

评论列表(0条)

保存