我在gdb(版本7.1)中收到以下消息:
[Thread debugging using libthread_db enabled]
和命令reverse-step
导致以下错误消息:
(gdb) reverse-step
Target multi-thread does not support this command
我正在调试一个串行代码,所以我绝对不需要多线程。我可以以某种方式关闭它,以便我获得最新的反向调试命令吗?此外,如果代码与OpenMPI并行化,则根本不需要多线程调试,对吧?
编辑:这是否设置为可以被排除的编译标志?
答案 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
以检查它是否作为共享库链接)所以如果您不需要它,可能是编译脚本中的问题。