2012-02-01 3 views
4

トレースポイントを使用して、フルアクセスが可能なローカルマシン上のprogをデバッグします。私は私に与えトレースポイントとそのpasscountと使用して情報TRを設定することができる午前トレースポイントがgdbで動作しておらず、「トレースはリモートターゲット上でしか実行できません」というメッセージが表示されます

(GDB)情報TR

のNum eNBはPassC StepCアドレス

search_tcpで何

1 Y 0x080b7529 2 0 tcp_pkt.cで:トレースポイント1用412の

アクション: その後、私はPROGを実行する流れ エンド

を収集し、私は必要なを収集するためにtfindまたはtdumpを与えるとき、それはいつものように、最後に実行されますデータは、それが示しています

(GDB)は1

トレースのみリモート・ターゲット上で実行することができtfind。

(GDB)tdump

トレースのみリモート・ターゲット上で実行することができます。

でも「tstart」を使ってみましたが、「トレースはリモートターゲットでしか実行できません」と表示されます。

このメッセージの意味は何ですか? tracepoingの使用は現在サポートされていませんか?または、LANやその他のネットワーク上の一部のリモートマシンをデバッグするためのものですか? ご協力いただければ幸いです。

おかげ ヴィカス

答えて

11

このメッセージの意味は何であるか上の任意のアイデア?トレースポイント機能がgdbserverでのみ実施され、ネイティブでデバッグするときにtstartを使用することはできませんので、ないGDB自体に、(ときGDBは劣るが制御されます。

意味はメッセージが言うまさにです(デバッグ中)プロセスを直接実行する)。

代わりに、あなたは(まだ単一のマシン上で行うことができます)リモートデバッグセッションを設定する必要があります別ウィンドウで

gdbserver :10000 ./a.out # start gdbserver listening on port 10000 

gdb -ex 'target remote :10000' ./a.out 

今あなたが持っているでしょうリモートターゲット(同じホスト上で実行中のgdbserver)を持つGDBとtstartなどが動作します。

更新:

しかし、今、私は以下のMSGを参照してください。あなたがtstartを使用する前に
(gdb) tstart
Target does not support this command.
(gdb) r
The "remote" target does not support "run".

を、トレースを設定する必要があり、行動は、文書化されているようにhere

また、下位プロセスがであるため、が実行されているため、runにできません。代わりにcontinueを使用してください。

アップデート2:

(gdb) trace testprog.c:273 
Tracepoint 1 at 0x4578f7: file testprog.c, line 273. 
(gdb) passcount 2 1 
Setting tracepoint 1's passcount to 2 
(gdb) actions 1 
Enter actions for tracepoint 1, one per line. 
End with a line saying just "end". 
> collect id1 
> end 
(gdb) tstart 
Target does not support this command 

あなたgdbserverが古い、そして事実ないサポートトレースでないようですね。

gdb --version 
gdbserver --version 

農産物を何?

アップデート3:

どうやらあなたgdbserver古すぎます。このオプションに「-fファイル名」を与えるために

は、私のプログラムが取る:

は、GDB自体、バージョン4.17以降トレースポイントをサポートしていますが、gdbserver

バージョン7.2にアップデート4をトレースポイントをサポートし始め入力として

シンプルです。あなたはgdbserverのためdocumentation読み取ることができますが、私はあなたがこの呼び出しを探していると信じて:reply..iための多くは、あなたが一つの端末で実行されている、すなわちgdbserverを上に書かれているものは何でも続く

gdbserver :10000 ./a.out -f filename 
+0

ハイテク...感謝をし、上記のようにgdb cmdを同じホスト上の別の端末で実行してください。これで、「トレースはリモートターゲット上でのみ実行可能です」というメッセージは表示されなくなりました。しかし、今私は次のmsgを参照してください:(gdb)tstart ターゲットはこのコマンドをサポートしていません。 (gdb)r 「リモート」ターゲットは「実行」をサポートしていません。 「ヘルプターゲット」または「続行」を試してください。 私のgdbバージョンも7.0です。何が問題なの?それは私のgdbでサポートされていませんか?私にお知らせください。 – mezda

+0

私は1つの端末でこれを行いました: gdbserver:10000 ./testprog プロセス./testprogが作成されました。 PID = 31543 ホスト127.0.0.1 から他方の端子のポート10000 リモートデバッグを鑑賞: GDB -ex 'ターゲット遠隔:10000':273 トレースポイント1 (GDB)トレースtestprog.cを./testprog 0x4578f7で:testprogファイル。c、line 273を参照してください。 (gdb)passcount 2 1 トレースポイント1のパスカウントを2に設定する (gdb)アクション1 トレースポイント1のアクションを1行に1つ入力します。 "end"という行で終了します。 > collect id1 > end (gdb)tstart ターゲットでこのコマンドがサポートされていません このケースでは問題を教えてください。すべてのヘルプがたくさんあります。 – mezda

+0

$ gdbの--version のGNU GDB(GDB)7.0-Ubuntuの $ gdbserverを--version GNUのgdbserverを(GDB)7.0-Ubuntuで 著作権(C)は、2009年、フリーソフトウェア財団、株式会社 gdbserverをはでカバー、フリーソフトウェアです。このgdbserverは "i486-linux-gnu"として設定されました バージョンが本当に問題であるかどうか教えてください。何か他の理由がありますか?バージョンが問題の場合は、どのバージョンをインストールするかによって問題が解決されます。 すべてのヘルプに感謝しています。あなたの答えは非常に有益です。 – mezda

関連する問題