私は小さなC++プログラムmy-program
を持っています。私がmy-program
を直接実行するときC++:linuxシェルスクリプトでgdbを実行
./my-program arg1
すべてが問題ありません。私は何の誤りもありません。私が直接このスクリプトを実行すると
#!/bin/sh
my-program $1
::私はmy-script.sh
を持っているだけでなく
./my-script.sh arg1
私はすべてのエラーを得ることはありません。
my-script.sh
を他のLinuxプロセスから実行すると問題が発生します。この場合私は時々(!)Segmentation fault
エラーを取得します。私がやった:私は、C++コンパイラに-g
スイッチを追加し、my-script.sh
を編集し、それがなったので:gdb-script
で
#!/bin/sh
gdb -batch -x gdb-script --args my-program $1
私が書いた:
run
をしかし、私はまだどのラインを見つけることができません原因:Segmentation fault
エラー。エラーが発生した後、スタックトレースをいくつかのファイルに出力するにはどうすればよいですか?または、このエラーの原因となるプログラム内の場所を取得する方法がありますか?
あなたの "gdb-script"ファイルに 'bt'(または' backtrace'または 'where')を追加しますか? - スレッドがたくさんある場合は、すべてのスレッドのすべてのスタックを印刷するためにもっと多くのことをしたいと思うかもしれません - 私はそのコマンドが何であるか分かりませんが、実行できることは分かっています。 –
valgrindで実行してみてください。 –