gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:11:27 25 4
gpt4 key购买 nike

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

(gdb) reverse-step
Target multi-thread does not support this command.

this question,我认为加载libthread_db可能是一个问题,但是,当我运行该程序时,gdb表示:
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启用反向调试?是否有可能?

最佳答案

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

record

从要前进和后退的角度出发(请记住,录制会大大减慢执行速度,尤其是在您有多个线程的情况下!)

我刚刚检查了它是否正常工作:
(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

...
(gdb) next
49 p[i].id=i;
(gdb) reverse-next
47 for (i=0; i<n; i++)

...
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);

关于multithreading - 如何在多线程程序上启用反向调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7517236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com