如何在OPNET Modeler的调试模式下显示打印语句?

时间:2012-04-07 07:00:44

标签: c++ visual-studio debugging

我正在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.                                                      |
|-----------------------------------------------------------------------------|

我需要在代码中显示print语句。 它必须出现在哪里? 在运行模拟之前是否有任何步骤以确保OPNET调试器使用Visual Studio&仔细阅读我的代码??

2 个答案:

答案 0 :(得分: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存储库。如果是这种情况,则代码不会被编译,您将不会在调试器中看到任何打印语句。请参阅首选项“网络模拟存储库”以查看您是否使用存储库而不是编译自己的代码。

答案 1 :(得分:0)

我对你尝试做什么并不太了解,但我认为你可以使用

将语句直接输出到C ++代码的调试器

OutputDebugStringA("Your string here");

或只是

OutputDebugString("Your string here");

希望这有帮助!