方法一:
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下调试程序用什么工具等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)