「run」と入力したかのように、gdb
ですぐに実行可能ファイルを実行したいと思います(動機:「run」と入力するのが嫌いです)。
1つの方法は、次のようにコマンドをgdb
にパイプすることです。
$ echo run | gdb myApp
しかし、このアプローチの問題は、gdb
との対話性が失われることです。ブレークポイントがトリガーされるか、myApp
がクラッシュすると、gdb
は終了します。この方法は here で説明されています。
--help
のオプションを見ると、これを行う方法がわかりませんが、おそらく何かが欠けています。
_gdb -ex run ./a.out
_
_a.out
_に引数を渡す必要がある場合:
_gdb -ex run --args ./a.out arg1 arg2 ...
_
編集: Orion これはMac OSXでは動作しないと言います。
_-ex
_フラグは_GDB-6.4
_(2005年にリリース)以降利用可能ですが、OSXはAppleのGDBのフォークを使用し、Leopardの最新のXCodeにはGDB 6.3.50-20050815 (Apple version gdb-967)
が含まれているため、幸運。
現在の_GDB-7.0.1
_リリースをビルドすることは、可能な解決策の1つです。必ず this と読んでください。
私はgdbスクリプトを使用します:
gdb -x your-script
your-scriptには次のようなものが含まれます:
file a.out
b main
r
その後、通常のインタラクティブなgdbプロンプトが表示されます
[〜#〜] edit [〜#〜]:
本当に怠け者のための最適化は次のとおりです。
.gdbinit
にworking directory
としてスクリプトを保存します。その後、単にgdbを次のように実行します。
gdb
...およびgdbは、.gdbinitのコンテンツを自動的にロードして実行します。
(echo r ; cat) | gdb a.out
Catを使用すると、gdbが中断した後も入力を続けることができます。
start
command
このコマンドは別の良いオプションです:
gdb -ex start --args ./a.out arg1 arg2
Runに似ていますが、main
に一時的なブレークポイントを設定し、そこで停止します。
この一時的なブレークポイントは、ヒットすると無効になります。
starti
関連するstarti
もあります。これは、プログラムを開始し、代わりに最初の命令で停止します。以下も参照してください。 GDBの最初のマシンコード命令で停止
あなたがいくつかの低レベルのものをやっているときに素晴らしい。
gdb -x <(echo run) --args $program $args