6

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

[Thread debugging using libthread_db enabled]

和命令reverse-step

结果显示以下错误消息:

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

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

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

4

1 回答 1

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.

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

我不确定 OpenMPI 并行应用程序是多进程的(与 OpenMP 相比,它们是多线程的),所以它不会为您带来任何改变。

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

于 2011-07-08T14:15:47.027 回答