2012-04-14 4 views
0

私はGDBでプログラムを試していました。私は 'break x'を実行して、ステップバイステップで実行していました。だから私が辞めるとき、私は 'quit'と言っています、それは "劣ったプロセスが警告メッセージを殺される"を返すでしょう。私が「Y」をするとどうなりますか?私はどうにかしてプロセスから抜け出したいからです。何が起きるか私は実行中のプロセスを付けて終了する。それは切り離されるか、実行中のプロセスは終了しますか?さまざまな情報源が異なるアイデアを提供します。お知らせ下さい。GDB inferior quit

また、プログラムを実行しようとすると、ピーターのチュートリアルから標準プログラムが実行されています。私が整列するステップを行うときには、このエラーを与える16

_IO_puts (str=0x40075e "In display():") at ioputs.c:35 
35 ioputs.c: No such file or directory. 
    in ioputs.c 

プログラム

14 void display(int z, int *zptr) { 
    15  printf("In display():\n"); 
    **16  printf(" z is %d and is stored at %p.\n", z, &z);** 
    17  printf(" zptr points to %p which holds %d.\n", zptr, *zptr); 
    18 } 

答えて

1

デバッガでプロセスを実行し、デバッガを終了すると、実行中のプログラムはあなたのように(殺されますSIGKILLと一緒に)。プログラムを正常に終了するには、プログラムが完了するまでcontinue(恐らく無視回数が多い)とします。

実行中のプログラムにデバッガを接続してデバッガを終了すると、デバッガはただちに切り離され、プログラムを実行する前に終了します。

+0

これで問題は解決しました。ありがとうございました。しかし、私はioputs.cを続けています:「ステップ」を使用する場合に限り、そのようなファイルディレクトリはありません。それ以外の場合、プログラムは正常に終了します。私はプログラムがprintfを持っていると思いますが、それはライブラリ関数などにトレースします。しかし、それはチュートリアルで言及されている方法ではありません。ちょっと私は疑問に思っています。 gccやgdbのバージョンが違うかもしれませんか? – howtechstuffworks

+1

Cライブラリのソースコードはありません。ご心配なく。 Cライブラリの関数( 's'ではなく' n')を単に*処理します。 –

+0

"プログラムを正常に終了するには、continue(恐らく無視回数が多い)"と言ってください - より簡単な方法は、代わりに 'detach'と' quit'です。 –