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.

GDBにlibthread-db.so、そうでないディレクトリでヘルパーライブラリ()を検索するように指示するため、マルチスレッドデバッグは有効になりません。

OpenMPI並列アプリケーションがマルチプロセスであるかどうかはわかりません(マルチスレッドであるOpenMPとは対照的です)ので、何も変更されません。

編集:マルチスレッドデバッグは通常libpthread.so、プロセスによってまたは同等のものがロードされた場合にのみ有効になります(ldd your-process共有ライブラリとしてリンクされているかどうかを確認するため)。したがって、マルチスレッドデバッグが必要ない場合は、コンパイルスクリプトに問題がある可能性があります。

于 2011-07-08T14:15:47.027 に答える