-1

我有一个用 C#编写的工具,其可执行文件在许多用户之间共享。

在某些 PC 上,我发现 - 特定变量被清除(即 List 被自己清除);这会导致工具抛出异常。

相同的工具在其他 PC 上的所有条件下都能正常工作。

如果我将这几台 PC 与其他所有 PC 进行比较,RAM、操作系统、任务负载等方面没有区别。 工具及其依赖项以及使用它的步骤也都是相同的。

我对这种奇怪的行为感到困惑。对我来说,其他问题是受影响的 PC,他们的用户位于不同的国家。所以我不能手动检查PC参数或者可以调试。我依赖于我得到的日志。

你们中的任何人都遇到过类似的问题吗?

你能提示我两台具有相同配置的不同电脑如何表现不同吗?环境变量、系统参数等是否存在依赖关系?

问候, 萨钦

4

5 回答 5

1

没有人可以用您提供的有限信息来回答您的问题。不过,我可以给你一些建议,你可以如何解决这个问题。

  1. 添加调试日志- 将日志添加到带有参数信息的每个方法。您的日志越详细,您就越容易找到错误。
  2. 添加错误处理程序以通过电子邮件发送带有整个堆栈跟踪的异常 - 您能否添加此功能,因为这将消除手动收集日志的麻烦。此错误处理程序还可以附加整个日志,以便您在电子邮件中获得完整的上下文。
  3. 分析日志以找出哪个函数在哪个参数上失败
  4. 从您的程序中删除错误。
于 2013-09-05T13:28:17.010 回答
1

会不会是线程问题?有时,具有不同可用内核数量的机器对竞争条件的响应不同。

于 2013-09-05T13:28:17.233 回答
0

感谢您的宝贵建议和提示。

由于 CultureInfo 不同而发生错误。该可执行文件还在读取 XLS 文件以获取一些数据。由于文化信息中的错误匹配,XLS 读取不成功,这反过来又损坏了几组变量。

为了解决这个问题,我有 2 个选项: 1. 安装 MS Office 语言包 2. 更改程序中的文化信息如下: CultureInfo = new CultureInfo("en-US");

@先生。Jeroen van Langen 特别感谢您!

问候, 萨钦

于 2013-09-19T09:31:19.147 回答
0

任何设备都可能受到随机内存问题存储不一致的影响,并且在 Windows 机器中,臭名昭著的 WINDOWS REGISTRY 可以保存许多不同的值,这些值会影响程序的执行方式。

我建议您运行任何可靠的工具,在工作的机器上执行内存诊断,并将其与不工作的机器进行比较

改进工具中的逻辑,检查变量的内容并执行 try/catch 操作以尝试检测根本原因并记录这些错误以诊断正在发生的事情

于 2013-09-05T13:30:41.783 回答
0

它认为您应该在区域/文化设置上搜索问题。这行“对我来说其他问题是受影响的 PC 并且他们的用户位于不同的国家/地区。” 敲响了变量与字符串的双精度有关的铃声,反之亦然。该列表可能会被解析异常打断。

如果您Thread.CurrentThread.CurrentUICulture.NumberFormat.NumberDecimalSeparator在开始时显示/记录怎么办。

然后你应该用文化信息解析。

例如:

CultureInfo usCultureInfo = new CultureInfo("en-US");

double result;

if (!double.TryParse("0.231312", NumberStyles.Float, usCultureInfo, out result))
{
}

另一个问题可能是,是否安装了正确的 .NET 版本(完整/客户端配置文件)

于 2013-09-05T14:30:58.283 回答