これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド vgdb です。
プログラム:
NAME
vgdb - Valgrind と GDB またはシェルの間の仲介者
SYNOPSIS
vgdb [オプション]
DESCRIPTION
vgdb (「Valgrind から GDB」) は、Valgrind と GDB またはシェルの間の仲介として使用されます。
XNUMX つの使用モードがあります。
1. スタンドアロン ユーティリティとして、シェル コマンド ラインから監視コマンドを送信するために使用されます。
Valgrind で実行されているプロセスに接続します。 この使用法では、vgdb OPTION は次のとおりである必要があります。
続いて送信する監視コマンドを入力します。 複数のコマンドを送信するには、コマンドを区切ってください
-c オプションを選択します。
2. GDB「ターゲットリモート |」との組み合わせコマンド、リレーアプリケーションとして使用されます
GDB と Valgrind gdbserver の間。 この使用法では、OPTION のみを指定できます。
ただし、COMMAND は指定できません。
OPTIONS
--pid=
vgdb が接続する必要があるプロセスの PID を指定します。 このオプションは便利です
複数の Valgrind gdbserver に接続できる場合。 もし --pid 引数は
指定されていない場合、複数の Valgrind gdbserver プロセスが実行されている場合、vgdb は
そのようなプロセスのリストを作成して終了します。
--vgdb-プレフィックス
Valgrind と vgdb のデフォルトのプレフィックスを変更する場合は、両方に指定する必要があります。
Valgrind gdbserver との間の通信に使用される FIFO (名前付きパイプ)
vgdb。
--wait=
vgdb に、指定された数の利用可能な Valgrind gdbserver を検索するように指示します。
秒。 これにより、Valgrind を開始する前に vgdb プロセスを開始できるようになります。
vgdb が通信する gdbserver。 このオプションは次の場合に役立ちます。
と組み合わせて使用されます --vgdb-プレフィックス それはあなたが望むプロセスに固有のものです
を待つ。 また、を使用する場合は、 - 待つ GDB「ターゲットリモート」コマンドの引数、
GDB のリモートタイムアウトを --wait 引数の値よりも大きい値に設定する必要があります。 見る
オプション --max-invoke-ms (すぐ下) に、remotetimeout 値の設定例を示します。
--max-invoke-ms=
vgdb が強制的に呼び出しを実行するまでのミリ秒数を指定します。
Valgrind に埋め込まれた gdbserver。 デフォルト値は 100 ミリ秒です。 値0
強制呼び出しを無効にします。 強制呼び出しは、vgdb が接続されているときに使用されます。
Valgrind gdbserver と、Valgrind プロセスのすべてのスレッドがシステム内でブロックされています
コール。
大きな値を指定した場合は、GDB の「remotetimeout」値を増やす必要がある場合があります。
デフォルト値の 2 秒から変更されます。 タイムアウト (秒単位) を確認する必要があります。
より大きい --max-invoke-ms 価値。 たとえば、 --max-invoke-ms=5000
次の GDB コマンドが適切です。
(gdb) リモートタイムアウト 6 を設定します
--cmd-タイムアウト=
接続されている Valgrind gdbserver が終了した場合、スタンドアロン vgdb に終了するように指示します。
指定された秒数内にコマンドが処理されません。 デフォルト値は次のとおりです
決してタイムアウトしないでください。
--ポート=
vgdb に、tcp/ip を使用し、指定されたポート nr で GDB をリッスンするように指示します。
パイプを使用して GDB と通信します。 tcp/ip を使用すると、GDB を XNUMX 台で実行できます
コンピュータにアクセスし、別のターゲット コンピュータで実行されている Valgrind プロセスをデバッグします。 例:
# ターゲット コンピューターで、valgrind でプログラムを起動します。
valgrind --vgdb-error=0 プログレッシブ
# そして別のシェルで次を実行します。
vgdb --port=1234
GDB をホストするコンピューターで、次のコマンドを実行します。
gdb プログラム
(gdb) ターゲット リモート targetip:1234
ここで、targetip はターゲット コンピュータの IP アドレスまたはホスト名です。
-c
スタンドアロン vgdb に複数のコマンドを与えるには、コマンドをオプションで区切ります。
-c。 例:
vgdb v.set log_output -c Leak_check any
-l
スタンドアロン vgdb に、Valgrind gdbserver プロセスのリストを報告するように指示します。
実行して終了します。
-D
スタンドアロン vgdb に対して、
Valgrind gdbサーバー。 vgdb は、Valgrind gdbserver の共有を表示した後に終了します。
記憶の状態。
-d
vgdb にデバッグ出力を生成するように指示します。 複数与える -d 増加する引数
冗長さ。 与えるとき -d リレー vgdb に標準エラーをリダイレクトする方がよいでしょう。
GDB と vgdb デバッグ出力の間の相互作用を避けるために、vgdb の (stderr) をファイルにコピーします。
onworks.net サービスを使用してオンラインで vgdb を使用する