GDB 7.0 与 回溯调试

原文:http://coolshell.cn/?p=1525    http://coolshell.cn/?p=1502 (酷壳

 

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”。

    这个东西,对于我这个老家伙来说比较新鲜,而且还有点诡异。我还没有来得及试用过这个技术。不过,我感觉到有点没跟上这个技术,不知道这个技术主要是用来干什么?对于程序的运行的回滚?这样一来,如果,我某条语句创建了一个线程,或是一个文件,逆向执行回去,莫非它还能把这些程序创建出来的资源回收啦?就算是能回收,要是我的某个程序向网络发了些数据出去,莫非它还能给我再收回来?也许我想得太极端了,不过好像目前对这个技术的原始需求的说明不是很多,所以真不知道这个技术除了很酷,还有什么?也许是我理解错了,希望大家指点一下。

  • 你可能感兴趣的:(windows,python,脚本,平台,X86,debugging)