我有一个关于我在运行离散事件模拟大约一分钟时得到的错误的“黑匣子”问题。一切正常,并且成功完成,但系统在模拟过程中的某个时刻打印了以下消息一次:
Error (202): Command token too long
我从来没有见过这样的东西。我不知道它指的是什么“命令”。也许是system("...")
调用我在程序中多次调用以绘制和可视化它生成的数据。
对不起,我无法提供任何代码,因为我不确定错误的来源。有没有一种有效的方法来发现系统在哪一点上生成此消息?或者在任何情况下,您是否在自己的C ++编程体验中遇到过这样的错误,从而建议它可能来自何处?
我正在使用Ubuntu 11.04并使用GCC进行编译。对于特别长(30秒)的模拟,在>>模拟期间出现错误,并且在较短的情况下不会出现。我应该强调,“错误”不会停止代码的执行,并且实际上不会在模拟数据的可视输出中引起任何可见错误。
答案 0 :(得分:2)
编写类似于以下内容的程序:
int trials 10000;
string str("ls ");
while( trials--)
{
system( str.c_str() );
str += "a";
cout << "chars in cmd = " << trials << endl;
}
它会连续运行像 ls,ls a,ls aa,ls aaa,同时在控制台上打印正在试用的试用版。
如果您对错误的来源是正确的,最终会得到关于“令牌太长”的相同错误消息,如果是,请告诉您cmd可能有多少个字符。然后将此限制编码到您的真实C ++程序中,以便它不会发出错误。
如果它没有重现错误,请尝试更大的#试验,说高达100k。如果它仍然没有发生,那么错误可能来自其他地方。
答案 1 :(得分:0)
它来自词法分析器,告诉你程序中的一个标记(标识符/ preproc标记/等)相当冗长。查看您的代码,看看是否有任何可笑的长字符串或预处理器令牌。