最近折腾各种编译级别的程序分析工具,试过了KLEE(符号执行),valgrind(binary instrumentation)还有VAGA(用于提取变量依赖关系,但是好像paper里说的神乎其神工具却没有发布,被戴姆勒克莱斯勒持有版权……反正我要的依赖关系检测与它提供的估计也不同所以不管了)。 按理win下的IDE调试工具可以提供运行时堆栈,变量,内存信息,gdb肯定也没问题,多年前只用过交互式,现在到了脚本方式运行它的时候了(遮挡是被我当成了鸡肋功能)。
gdb可以做的事(低级---->高级):
1. 定义自己的命令,写自己的脚本,嵌入在python脚本中,,运行shell,输出到文件--->帮助完成自动检测程序运行装态。
2. 收集local,global,macro,heap,stack,mem等信息。
3. 设置变量某时刻值,跳转/调用函数,修改源码,环境变量等!
4. (条件)断点,检查点,捕获点管理等
5. 支持复杂结构如结构体,数组的修改显示等,支持多线程
6. 居然可以支持反向执行了!!!!!
⊙▂⊙
✧
(某些体系结构CPU,gdb7.0以上,简直是我早就梦寐以求的调试器啊!!)
当然,(反向)符号执行的功能还不止如何做到,难道还是要用KLEE………………