反向步骤多线程错误

时间:2011-07-08 13:56:26

标签: multithreading debugging gdb reverse-debugging

我在gdb(版本7.1)中收到以下消息:

[Thread debugging using libthread_db enabled]

和命令reverse-step

导致以下错误消息:

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

我正在调试一个串行代码,所以我绝对不需要多线程。我可以以某种方式关闭它,以便我获得最新的反向调试命令吗?此外,如果代码与OpenMPI并行化,则根本不需要多线程调试,对吧?

编辑:这是否设置为可以被排除的编译标志?

1 个答案:

答案 0 :(得分:9)

您没有提到您正在使用的GDB版本,但是从那时起,参数libthread-db-search-path就可用了。

(gdb) set libthread-db-search-path /tmp
(gdb) start
Temporary breakpoint 1 at 0x400632: file threads.c, line 14.
warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.

会告诉GDB在它不是的目录中查找它的帮助库(libthread-db.so),因此不会启用多线程调试!

我不确定OpenMPI并行应用程序是多进程的(与OpenMP一样,它们是多线程的),所以它不会为你改变任何东西。

EDIT :多线程调试通常仅在您的进程加载libpthread.so或等效项时启用(ldd your-process以检查它是否作为共享库链接)所以如果您不需要它,可能是编译脚本中的问题。