1

OPNET Modeler で C++ コードを書いています。デバッガー モードでシナリオをシミュレートしようとしましたが、作成した関数をトレースする必要があります。コードに挿入した print ステートメントを表示する必要があります。

私はデバッガモードで使用しました:***ltr function_name()***その後***c***

しかし、結果は次のようになります。

Type 'help' for Command Summary


ODB> ltr enqueue_packet()
Added trace #0: trace on label (enqueue_packet())

ODB> c
|-----------------------------------------------------------------------------|
| Progress: Time (1 min. 52 sec.); Events (500,002)                           |
| Speed: Average (82,575 events/sec.); Current (82,575 events/sec.)           |
| Time : Elapsed (6.1 sec.)                                                   |
| DES Log: 28 entries                                                         |
|-----------------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
| Progress: Time (1 min. 55 sec.); Events (1,000,002)                         |
| Speed: Average (69,027 events/sec.); Current (59,298 events/sec.)           |
| Time : Elapsed (14 sec.)                                                    |
| DES Log: 28 entries                                                         |
|-----------------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
| Progress: Time (1 min. 59 sec.); Events (1,500,002)                         |
| Speed: Average (51,464 events/sec.); Current (34,108 events/sec.)           |
| Time : Elapsed (29 sec.)                                                    |
| DES Log: 28 entries                                                         |
|-----------------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
| Simulation Completed - Collating Results.                                   |
| Events: Total (1,591,301); Average Speed (48,803 events/sec.)               |
| Time  : Elapsed (33 sec.); Simulated (2 min. 0 sec.)                        |
| DES Log: 29 entries                                                         |
|-----------------------------------------------------------------------------|
|-----------------------------------------------------------------------------|
| Reading network model.                                                      |
|-----------------------------------------------------------------------------|

コードで print ステートメントを表示する必要があります。どこに表示する必要がありますか?シミュレーションを実行する前に、OPNET デバッガーが Visual Studio を使用してコードを実行できるようにするための手順はありますか??

4

2 に答える 2

2

OPNET Modeler には、トレース出力を出力する次のコマンドが用意されています。

op_prg_odb_print_major() メジャー インデント レベルで始まる ODB トレース ステートメントの形式で、一連の文字列を標準出力デバイスに出力します。

op_prg_odb_print_minor() マイナー インデント レベルの ODB トレース ステートメントの形式で、一連の文字列を標準出力デバイスに出力します。

op_prg_text_output() ユーザー定義文字列のシーケンスを標準出力デバイスに出力します。

例えば:

if (op_prg_odb_ltrace_active ("tcp_window")) {
  /* a trace is enabled, output Window-Related Variables */
  char str0[128], str1[128], str2[128];
  sprintf (str0, "rcv requests pending : (%d)", num_rcvs_allowed);
  sprintf (str1, "local receive window : (%d)", receive_window);
  sprintf (str2, "remote receive window : (%d)", remote_window);
  op_prg_odb_print_major ("Window-Related Variables", str0, str1, str2, OPC_NIL);

  sprintf (str0, "send unacked : (%d)", send_unacked);
  sprintf (str1, "send_next : (%d)", send_next);
  sprintf (str2, "receive next : (%d)", receive_next);
  op_prg_odb_print_minor (str0, str1, str2, OPC_NIL);
}

標準出力デバイスに表示される出力例:

            |       Window-Related Variables
            |               rcv requests pending : (3)
            |               local receive window : (6400)
            |               remote receive window : (10788)
            |               send unacked : (4525)
            |               send_next : (5000)
            |               receive_next : (1200)

[コードは OPNET Modeler のドキュメントから引用。]

注: 標準モデルを変更していて、stdmod リポジトリを使用していると推測しています。この場合、コードはコンパイルされておらず、デバッガーに print ステートメントは表示されません。独自のコードをコンパイルする代わりにリポジトリを使用しているかどうかを確認するには、「ネットワーク シミュレーション リポジトリ」の設定を参照してください。

于 2013-09-07T16:13:18.310 に答える
0

あなたが何をしようとしているのかはよくわかりませんが、次を使用してC++コードのデバッガーにステートメントを直接出力できると思います

OutputDebugStringA("Your string here");

あるいは単に

OutputDebugString("Your string here");

お役に立てれば!

于 2012-04-07T11:25:19.713 に答える