linux下调试程序用什么工具
发布网友
发布时间:2022-04-23 01:50
我来回答
共2个回答
热心网友
时间:2022-04-08 19:32
Linux调试程序大多数都是喜欢用gdb,gdb是一个命令行界面的程序调试工具,任何调试操作都是输入命令来实现的。从Windows过来的程序员可能不习惯用gdb这个调试器,可以去试试一些图形界面的的调试器,比如Kgdb、Affinic GUI Debugger,这两款调试器虽然是图形界面的调试器,但是它其实是调用gdb来完成它的调试功能的,也就是说它们其实是gdb的一个图形界面的外壳,所以要先安装好gdb再安装它们,不习惯gdb的命令界面的话,可以试试这两款软件。
热心网友
时间:2022-04-08 21:07
在Linux下,调试工具并非只有gdb,还有很多其它调试工具,它们都各有所长,侧重方面也有所不同。本文介绍几种笔者常用的调试工具:
1. mtrace 程序运行完毕后,使用mtrace工具分析这些内存分配历史信息,可以查出内存错误的位置(mtrace在glibc-utils软件包里)。
2. strace
在编程时,检查函数的返回值是一种好习惯。对于像glibc等标准C的函数,光检查返回值是不够的,还需要检查errno的值。这样的程序往往显得冗长,不够简洁。同时也可能是出于偷懒的原因,大多数程序里并没有做这样的检查。
这样的程序,一旦出现错误,用调试器一步一步定位错误,然后想法查出错误的原因,也是可以的,不过比较麻烦,对调试器来说有些大材小用,不太可取。这时,用strace命令可能会更方便一点。它可以显示各个系统调用/信号的执行过程和结果。比如文件打开出错,一眼就看出来了,连错误的原因(errno)都知道。
3. binutil
binutil是一系列的工具,你可能根本不知道它们的存在,但是没有它们你却寸步难行。
4. ld-linux
现在加载ELF可执行文件的工作,已经落到ld-linux.so.2头上了。
5. gdb
对于真正意义的调试器来说,gdb在linux下是独一无二的。它有多种包装,有字符界面的,也有图形界面的,有单独运行的,也有集成到IDE中的。gdb功能强大,图形界面的gdb容易上手一点,但功能无疑受到了一些*,相信大部分高手还是愿意使用字符界面的。Gdb太常用了,这里不再多说。
6. gcc/boundschecker
相信很多人用过win32下的BoundsChecker(Compuware公司)和Purify(IBM公司)两个工具吧。它们的功能实在太强大了,绝非能通过重载内存管理函数就可以做到,它们在编译时插入了自己的调试代码。 详细介绍可以看书籍《Linux就该这么学》。