首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在多线程程序上启用反向调试?

如何在多线程程序上启用反向调试?
EN

Stack Overflow用户
提问于 2011-09-22 23:19:59
回答 1查看 9.3K关注 0票数 35

我尝试在多线程项目上使用gdb 7.3.1的反向调试功能(使用libevent),但得到以下错误:

代码语言:javascript
复制
(gdb) reverse-step
Target multi-thread does not support this command.

this question中,我认为加载libthread_db可能是个问题,但是,当我运行该程序时,gdb说:

代码语言:javascript
复制
Starting program: /home/robb/slug/slug 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".

如何在多线程项目中使用gdb 7.3.1启用反向调试?有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-24 01:49:26

为此,您需要通过执行以下命令来激活指令记录目标

代码语言:javascript
复制
record

从您想要向前和向后移动的位置开始(请记住,记录将显著减慢执行速度,特别是当您有多个线程时!)

我刚刚检查了它是否工作正常:

代码语言:javascript
复制
(gdb) info threads 
  Id   Target Id         Frame 
  2    Thread 0x7ffff7860700 (LWP 5503) "a.out" hello (arg=0x601030) at test2.c:16
* 1    Thread 0x7ffff7fca700 (LWP 5502) "a.out" main (argc=2, argv=0x7fffffffe2e8) at test2.c:47

..。

代码语言:javascript
复制
(gdb) next
49          p[i].id=i;
(gdb) reverse-next
47      for (i=0; i<n; i++)

..。

代码语言:javascript
复制
17      printf("Hello from node %d\n", p->id);
(gdb) next
Hello from node 1
18      return (NULL);
(gdb) reverse-next
17      printf("Hello from node %d\n", p->id);
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7517236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档