1

我在 OPNET Modeler 中编写 C++ 代码。我尝试在调试器模式下模拟我的场景,并且我需要跟踪我编写的函数。我需要显示我把它放在我的代码中的打印语句。

我在调试器模式下使用:***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.                                                      |
|-----------------------------------------------------------------------------|

我需要在我的代码中显示打印语句。它必须出现在哪里?在运行模拟之前是否有任何步骤以确保 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 存储库。如果是这种情况,您的代码没有被编译,您将不会在调试器中看到任何打印语句。查看首选项“网络模拟存储库”以查看您是否使用存储库而不是编译自己的代码。

于 2013-09-07T16:13:18.310 回答
0

我不太了解您要做什么,但我认为您可以使用以下命令将语句直接输出到 C++ 代码的调试器

OutputDebugStringA("Your string here");

要不就

OutputDebugString("Your string here");

希望这可以帮助!

于 2012-04-07T11:25:19.713 回答