我必须调试具有多个线程的程序。我使用gdb,并且我想使用检查点。 manual中的唯一限制是检查点仅在gnu / linux系统上可用,而与线程无关。
但是,当我尝试检查点时,出现错误:
(gdb) checkpoint
checkpoint: can't checkpoint multiple threads.
我是否做错了,还是确实无法检查点多线程程序(此限制未在手册中列出?
N.B .:我很清楚在并发系统中检查点/回滚的概念确实很困难,由于此类程序的因果关系,问题更多的是关于我是否缺少某些内容。
当您调试多线程程序时,如果要使用断点,则应该知道代码行在哪个线程下运行,然后切换到该线程,则可以使用断点bro:D。看看这两个链接:
:的最大帮助:
https://sourceware.org/gdb/current/onlinedocs/gdb/Threads.html
不错看: