ns2 上的 tcl 脚本错误(没有这样的变量)
tcl script error on ns2 (no such variable)
我尝试 运行 此处提供的示例代码:http://simula.stanford.edu/~alizade/Site/DCTCP_files/dctcp-ns2-rev1.0.tar.gz
根据自述文件,补丁已成功应用,但在执行示例代码时,出现以下错误:
ns: myTrace file3: 无法读取 "dctcp_alpha_": 没有这样的变量
在执行时
"subst $[subst $var]"
(程序“_o154”第 5 行)
(反对下一行 5)
从内部调用
“_o154 下一个 dctcp_alpha_”
("eval" 正文第 1 行)
从内部调用
"eval $self next $args"
(程序“_o154”第 18 行)
(代理设置第 18 行)
从内部调用
“$tcp($i) 设置 dctcp_alpha_”
(程序"myTrace"第8行)
从内部调用
"myTrace file3"
如何解决?
构建示例:tar xvf ns-allinone-2.35_gcc482.tar.gz
https://drive.google.com/file/d/0B7S255p3kFXNSGJCZ2YzUGJDVk0/view?usp=sharing
cd ns-allinone-2.35/ns-2.35/
patch -p1 --ignore-whitespace -i dctcp.patch
光盘../
./安装
cd ns-2.35/
须藤安装
cp ns ns235-dctcp
sudo cp ns235-dctcp /usr/local/bin/
- 运行模拟:ns235-dctcpsimpleDumbbell.tcl
.. 创建文件 mytracefile.tr 2.1MB,thrfile.tr 10.2kB。 (并且queue.tr:0B)。
您的错误:您可能使用了错误的可执行文件 'ns'。
安全的方法是使用新名称修补 'ns' 的 DCTCP 副本。
并且在系统路径中有一个位置,比如 /usr/local/bin/ns235-dctcp
-
我曾经遇到过与您提到的完全相同的问题:
ns: myTrace file3: can't read "dctcp_alpha_": no such variable
while executing
st $[subst $var]"
(procedure "_o154" line 5)
(Object next line 5)
invoked from within
...
1.The 问题是您需要 编译 在 运行 打补丁后
如 Knud Larsen 在他的回答中提到的那样,在 运行 宁以下补丁之后:
cd ns-allinone-2.35/ns-2.35/
patch -p1 --ignore-whitespace -i dctcp.patch
您需要进入/ns-allinone-2.35/文件夹,进行编译:
cd ../
./install
cd ns-2.35/
sudo make install
不同于Knud Larsen,我没有重命名另一个ns。我运行直接用ns命令模拟:
ns simpleDumbbell.tcl
它对我有用。
希望这对您有所帮助:)
ns: _o83 selfish:
(_o83 cmd line 1)
invoked from within
"_o83 cmd selfish"
invoked from within
"catch "$self cmd $args" ret"
invoked from within
"if [catch "$self cmd $args" ret] {
set cls [$self info class]
global errorInfo
set savedInfo $errorInfo
error "error when calling class $cls: $args" $..."
(procedure "_o83" line 2)
(SplitObject unknown line 2)
invoked from within
"_o83 selfish"
我尝试 运行 此处提供的示例代码:http://simula.stanford.edu/~alizade/Site/DCTCP_files/dctcp-ns2-rev1.0.tar.gz
根据自述文件,补丁已成功应用,但在执行示例代码时,出现以下错误:
ns: myTrace file3: 无法读取 "dctcp_alpha_": 没有这样的变量 在执行时 "subst $[subst $var]" (程序“_o154”第 5 行) (反对下一行 5) 从内部调用 “_o154 下一个 dctcp_alpha_” ("eval" 正文第 1 行) 从内部调用 "eval $self next $args" (程序“_o154”第 18 行) (代理设置第 18 行) 从内部调用 “$tcp($i) 设置 dctcp_alpha_” (程序"myTrace"第8行) 从内部调用 "myTrace file3"
如何解决?
构建示例:tar xvf ns-allinone-2.35_gcc482.tar.gz
https://drive.google.com/file/d/0B7S255p3kFXNSGJCZ2YzUGJDVk0/view?usp=sharing
cd ns-allinone-2.35/ns-2.35/
patch -p1 --ignore-whitespace -i dctcp.patch
光盘../
./安装
cd ns-2.35/
须藤安装
cp ns ns235-dctcp
sudo cp ns235-dctcp /usr/local/bin/
- 运行模拟:ns235-dctcpsimpleDumbbell.tcl
.. 创建文件 mytracefile.tr 2.1MB,thrfile.tr 10.2kB。 (并且queue.tr:0B)。
您的错误:您可能使用了错误的可执行文件 'ns'。
安全的方法是使用新名称修补 'ns' 的 DCTCP 副本。
并且在系统路径中有一个位置,比如 /usr/local/bin/ns235-dctcp
-
-
我曾经遇到过与您提到的完全相同的问题:
ns: myTrace file3: can't read "dctcp_alpha_": no such variable
while executing
st $[subst $var]"
(procedure "_o154" line 5)
(Object next line 5)
invoked from within
...
1.The 问题是您需要 编译 在 运行 打补丁后
如 Knud Larsen 在他的回答中提到的那样,在 运行 宁以下补丁之后:
cd ns-allinone-2.35/ns-2.35/
patch -p1 --ignore-whitespace -i dctcp.patch
您需要进入/ns-allinone-2.35/文件夹,进行编译:
cd ../
./install
cd ns-2.35/
sudo make install
不同于Knud Larsen,我没有重命名另一个ns。我运行直接用ns命令模拟:
ns simpleDumbbell.tcl
它对我有用。
希望这对您有所帮助:)
ns: _o83 selfish:
(_o83 cmd line 1)
invoked from within
"_o83 cmd selfish"
invoked from within
"catch "$self cmd $args" ret"
invoked from within
"if [catch "$self cmd $args" ret] {
set cls [$self info class]
global errorInfo
set savedInfo $errorInfo
error "error when calling class $cls: $args" $..."
(procedure "_o83" line 2)
(SplitObject unknown line 2)
invoked from within
"_o83 selfish"