2009年10月06日,GDB7.0正式发布,新的版本你可以在这里下载。本次版本,不但有大家所关注的《GDB回溯调试技术》,同样还有其它大量的新特性,和对新平台的支持。
新版的GDB7.0支持如下新的平台或配置(我最关注的特性为蓝色所示):
x86/x86_64 Darwin
x86_64 MinGW
Lattice Mico32
x86/x86_64 DICOS
S+core 3
The remote stub now supports x86 Windows CE
其主要的新加入的功能有:(看上去相当地高科技啊,很多术语都不知道怎么翻译才好,请注意后面的相关解释)
Python 脚本调试
回溯调试,调式过程记录并重演。
不间隔调试。 Non-stop debugging
并行调试。 Multi-architecture debugging
多进程调试。Multi-inferior, multi-process debugging
注释:
Non-stop 的意思是,当我们在调试一个进程中的某一个或某一些线程时,可以让没有被调试的线程继续运行不停止。
Multi-architecture在字面上理解是多层架构,但应该是关于并行方面的(请大家指正),比如MIPS或SPARC等并行编程方面的。
Multi-inferior的意思是,你可以同时调试多个不同的进程。在某些情况下,这会更容易帮助我们了解程序的内部执行情况。
当然,本版本也包括了下面的一些改进和补丁:
* GDB 为JIT 提供了一个编译接口
* Tracepoints 可以加上条件
* 支持多字节和宽字符
* 为”disassemble”新增加/r 和/m 参数
* 对共享库的自动获取
* 支持内联函数
* 新的远程协议包
* GDB 开始可以读取压缩调试片段
* 在Tru64平台下支持线程切换
* 支持Ada 任务切换
* gdbserver的新功能 ——GDB remote stub
* 一个新的命令,当有系统调用发生时可以停止正在运行的程序
关于回溯调试,这是一种可以让在debug程序时当我们运行单步调试或是运行到断点时,可以以逆向执行程序的一种技术。(这是GNU的新闻链接)
下面是GDB7.0版本所支持的逆向调试的命令,其中包括,continue,step,以及调试方向的设置。
reverse-continue (’rc’) — 继续程序运行到断点,但是是逆向运行程序。
reverse-finish — 回溯运行程序直到跳出本层函数。
reverse-next (’rn’) — 语句单步向后跟踪程序。
reverse-nexti (’rni’) — 指令单步向后一条指令。
reverse-step (’rs’) — 向后执行一条语句,单步进入。
reverse-stepi — 向后执行一条指令,单步进入。
set exec-direction (forward/reverse) — 设置程序执行方向,向前或向后。
在网上查了一下,发现VS2010好像也准备要支持这个东西,微软叫这个东西为“Historical Debugging”。