2011-11-14 7 views
2

ヘルプ、どうすればこの問題を解決できますか? stdinからgdbにコマンドをリダイレクトできません。gdbパイプリダイレクトエラー:(gdb)fdでハングアップが検出された0

は、私はこのエラーを取得する:

[email protected]:~/workspace/AVT$ echo "list" | gdb a.out 
GNU gdb (Ubuntu/Linaro 7.3-0ubuntu2) 7.3-2011.08 
Copyright (C) 2011 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. Type "show copying" 
and "show warranty" for details. 
This GDB was configured as "i686-linux-gnu". 
For bug reporting instructions, please see: 
<http://bugs.launchpad.net/gdb-linaro/>... 
Reading symbols from /home/charmae/workspace/AVT/a.out...done. 
(gdb) Hangup detected on fd 0 
error detected on stdin 

答えて

0

あなたの目標は、GDBはそれを行うための最も簡単な方法は、.gdbinit起動ファイルを使用することで、起動時にコマンド「リスト」を実行する場合。

 
$ echo list > .gdbinig 
$ gdb a.out 

あなたは、.gdbinitにリストされているコマンドをください実行した後に終了するにはgdbをしたい場合:たとえば

 
$ echo quit >> .gdbinit 
+0

私の目標は、上記のエラーを修正することです。私は、私のJavaプログラムとgdbの間にいくつかの配管をしています。私はそれに固執しています。 – Chinwei

+0

この例の問題は、stdinを閉じることです。パイプを開いたままにしておくことができれば、gdbはうれしいでしょう。たとえば、(これはひどいハックです)、 "tail -f input-file | gdb"を実行して、javeプログラムをinput-fileに書き込ませることができます。 –

+1

Yey!私は私のJavaプログラムとgdbの間でパイプを走らせることができました。 プロセスp = Runtime.getRuntime()。exec( "gdb a.out --interpreter = console"); – Chinwei

2

うまく動作別の技術は、ヒアドキュメントを使用してGDBへの入力をリダイレクトすることです:

gdb -quiet -nx << EndOfInput 
thread apply all bt 
quit 
EndOfInput 

これにより、一時ファイルを使用せずにgdbを制御するスクリプトを書くことができます。 「ハングアップが検出されました」というメッセージが完全に表示されないようです。

関連する問題