3

ターミナルから(GDBなしで)実行すると、いくつかの出力を出力するプログラムがあります。出力が次のようになっていると仮定します

welcome to CMP simulator
initializing
finish initialization
now run
goodbye

現在、GDB を使用したい場合、プログラムは PID を提供し、それを使用して GDB にアタッチします。プログラムの出力が次のようになったとします。

welcome to CMP simulator
gdb - 5932    (Run this command on another terminal and type "continue" at GDB prompt)

プログラムが SIGCONT を待っている間、別のgdb - 5932端末で実行します。「続行」と入力すると、GDB は次のようなクラッシュを報告します。

Loaded symbols for /home/mahmood/results/temp/libCMP_iface_gcc.so
0x00007fd3a499fb7b in raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:42
42      ../nptl/sysdeps/unix/sysv/linux/pt-raise.c: No such file or directory.
(gdb) c
Continuing.

Program received signal SIGSTOP, Stopped (signal).
[Switching to Thread 0x7fd3a343f700 (LWP 21014)]
0x00007fd3a408e303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>)
     at ../sysdeps/unix/sysv/linux/poll.c:87
87      ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
(gdb) bt
#0  0x00007fd3a408e303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>)
     at ../sysdeps/unix/sysv/linux/poll.c:87
#1  0x00007fd3a4c0fc4c in ?? () from /home/mahmood/simics-3.0.31/amd64-linux/bin/libsimics-common.so
#2  0x00007fd3a4997e9a in start_thread (arg=0x7fd3a343f700) at pthread_create.c:308
#3  0x00007fd3a4099cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#4  0x0000000000000000 in ?? ()
(gdb)

この時点で、プログラムはまだ SIGCONT を待っています。

バックトレースとは?GDB がないとわかるように、プログラムは出力にさらに多くの行を表示します。ただし、GDB はクラッシュを示します。スレッドの作成に問題があると思います。

フィードバックをお待ちしております。

アップデート:

「続行」を再度実行すると、GDB で同じ出力が表示されます

 (gdb) c
 Continuing.

 Program received signal SIGSTOP, Stopped (signal).
 0x00007f09b653c303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>,  timeout=      <optimized out>)
    at ../sysdeps/unix/sysv/linux/poll.c:87
 87      in ../sysdeps/unix/sysv/linux/poll.c
 (gdb) bt
 #0  0x00007f09b653c303 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>)
     at ../sysdeps/unix/sysv/linux/poll.c:87
 #1  0x00007f09b70bdc4c in ?? () from /home/mahmood/simics-3.0.31/amd64-linux/bin/libsimics-common.so
 #2  0x00007f09b6e45e9a in start_thread (arg=0x7f09b58ed700) at pthread_create.c:308
 #3  0x00007f09b6547cbd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
 #4  0x0000000000000000 in ?? ()
 (gdb)

システムはubuntu 12.04 amd64です

4

2 に答える 2

0

GDBはクラッシュを表示していません。SIGSTOPは、プログラムが停止したことを意味し、gdbコマンド「continue」を使用して続行するか、「sigSIGCONT」を使用してシグナルを送信するようGDBに要求するだけです。

お役に立てば幸いです。

于 2013-02-20T13:09:12.420 に答える
0

pt-raise.c: そのようなファイルまたはディレクトリはありません

このエラーは、ソースから gdb を再構築することで修正できます

于 2016-10-30T12:45:26.453 に答える