反向步骤多线程错误

tma*_*ric 6 debugging multithreading 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
Run Code Online (Sandbox Code Playgroud)

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

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

Kev*_*vin 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.
Run Code Online (Sandbox Code Playgroud)

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

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

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