一、编译阶段 nm 获取二进制文件包含的符号信息strings 获取二进制文件包含的字符串常量strip 去除二进制文件包含的符号readelf 显示目标文件详细信息objdump 尽可能反汇编出源代码addr2line 根据地址查找代码行二、运行阶段gdb 强大的调试工具ldd 显示程序需要使用的动态库和实际使用的动态库strace 跟踪程序当前...
参考1《linux的strace命令(详解).txt》 新浪电子书可下载2man strace一个基本上通用的 完整的用法:strace -o output.txt -T -tt -e trace=all -p 28979上面的含义是 跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。必须记住的几个用法1)strace -p pid 可以跟踪某个后台进程2)strace -o filename 把跟踪结果输出...
strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用。strace调试工具strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数、返回值、执行时间。在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的。strace常用参数:-c 统计每种系统调用执行的时间、调用次数、出错次数,程序退出时给出报告-p pid 跟踪...
一、为什么需要Debugger? 很多PHP程序员调试使用echo、print_r()、var_dump()、printf()等,其实对 于有较丰富开发经验的程序员来说这些也已经足够了,他们往往可以在程序执行的过程中,通过输出特定变量的值可以判断程序执行是否正确,甚至效率高低也可以 看出来(当然可能还需要使用一些时间函数)。那么我们为什么还需要一个专门的调试程序来监控我们的程序运行呢? 这个问题的答案不妨留到后面来揭晓。 二、什么是Xdebug? Xdeb...
参考1《linux的strace命令(详解).txt》 新浪电子书可下载2man strace一个基本上通用的 完整的用法:strace -o output.txt -T -tt -e trace=all -p 28979上面的含义是 跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。必须记住的几个用法1)strace -p pid 可以跟踪某个后台进程2)strace -o filename 把跟踪结果输出...
一、为什么需要Debugger? 很多PHP程序员调试使用echo、print_r()、var_dump()、printf()等,其实对 于有较丰富开发经验的程序员来说这些也已经足够了,他们往往可以在程序执行的过程中,通过输出特定变量的值可以判断程序执行是否正确,甚至效率高低也可以 看出来(当然可能还需要使用一些时间函数)。那么我们为什么还需要一个专门的调试程序来监控我们的程序运行呢? 这个问题的答案不妨留到后面来揭晓。 二、什么是Xdebug? Xdeb...
参考1《linux的strace命令(详解).txt》 新浪电子书可下载2man strace一个基本上通用的 完整的用法:strace -o output.txt -T -tt -e trace=all -p 28979上面的含义是 跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。必须记住的几个用法1)strace -p pid 可以跟踪某个后台进程2)strace -o filename 把跟踪结果输出...
strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用。strace调试工具strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数、返回值、执行时间。在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的。strace常用参数:-c 统计每种系统调用执行的时间、调用次数、出错次数,程序退出时给出报告-p pid 跟踪...
strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用。strace调试工具strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数、返回值、执行时间。在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的。strace常用参数:-c 统计每种系统调用执行的时间、调用次数、出错次数,程序退出时给出报告-p pid 跟踪...
一、为什么需要Debugger? 很多PHP程序员调试使用echo、print_r()、var_dump()、printf()等,其实对 于有较丰富开发经验的程序员来说这些也已经足够了,他们往往可以在程序执行的过程中,通过输出特定变量的值可以判断程序执行是否正确,甚至效率高低也可以 看出来(当然可能还需要使用一些时间函数)。那么我们为什么还需要一个专门的调试程序来监控我们的程序运行呢? 这个问题的答案不妨留到后面来揭晓。 二、什么是Xdebug? Xdeb...
参考1《linux的strace命令(详解).txt》 新浪电子书可下载2man strace一个基本上通用的 完整的用法:strace -o output.txt -T -tt -e trace=all -p 28979上面的含义是 跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。必须记住的几个用法1)strace -p pid 可以跟踪某个后台进程2)strace -o filename 把跟踪结果输出...
strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用。strace调试工具strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数、返回值、执行时间。在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的。strace常用参数:-c 统计每种系统调用执行的时间、调用次数、出错次数,程序退出时给出报告-p pid 跟踪...
,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以动手修正Bug了。 如果结果和预期的不一样,就根据结果做进一步的假设和分析。 这里,我们介绍一种很强大的调试工具gdb,可以完全操控程序的运行,使得程序就像你手里的玩具一样,叫它走就走,叫它停就停,并且随时可以查看程序中所有的内部状态,比如各变量的值、传给函数的参数、当前执行的代码行等。 有了gdb以后,即使调试手段丰富了...
#include <stdlib.h> #include <unistd.h>int func(int n) {int sum = 0;int i = 0;for(i = 0; i < n; i++)sum += i;return sum; }int main() {int i;long result = 0;for(i = 0; i <= 100; i++)result += i;printf("result[1-100] = %ld\n", result);printf("result[1-250] = %ld\n", func(250));return 0; }编译生成执行文件(Linux下):root@iZ2813hasr2Z:~/test/csdnBBS/gdb# gcc test1.c -g -o test1使用GDB调试:root@iZ281...
gdb还支持search命令搜索特定的内容,会显示出第一次出现待搜索内容的位置,按下回车再继续往下搜索,很明显search命令只能从头往尾搜索:(gdb)search main gdb提供了反向搜索命令reverse-search,search和reverse-search都支持正则表达式搜索。 4.设置断点使用break命令对指定的行设置断点:(gdb) break 10//在第10行设置断点 可以使用下面的命令查看,已经设置的断点的信息:(gdb) info break 使用clear命令可以清除当前行...