最近做了一个工控的应用程序,出厂前测试一切正常;出厂后用一段时间,大部分都没有问题,有一部分客户会反映软件功能异常,异常还不一样,有的打不开、有的UDP消息发不出去、有的访问文件时报路径不对。假设软件安装位置为:d:\V1.0\myApp.exe,把程序复制一份到:d:\V1.0-2\myApp.exe,复制的程序运行正常。过一段时间有可能还是会报错,再复制到d:\V1.0-3\myApp.exe,复制的程序还是正常的。环境是Windows10+.Net Framework 4.5.2,没有安装杀毒软件,设备也不可以上网,电脑是安装在设备内部的,软硬件都不会有人能动。
出现问题时,重启机器后再重新运行程序,问题还是在。目前唯一的解决办法就是改目录名称。
有没有可能是内存溢出?
如果是内存溢出的话,为什么换个位置运行就不溢出了?
@seabluescn: 可能是假象,换个位置肯定需要重新运行,重新运行内存释放了。只是提供一个思路,不一定是内存溢出,毕竟我掌握的信息不多。
我是觉得你说报错每次报的不一样,可能由于内存溢出导致的。
我觉得可以这样:不要每次都换个地方解决这个问题。下次报错时,集中精力对具体的错误进行分析,看看能不能找到原因。现在都是猜测
@会长: 出现问题后一般都会重启机器,正常的就正常,不正常的仍不正常。
@seabluescn: 还得从错误入手,想办法调试一下,比如把日志写的更详细一些,从日志入手
你得看看报错报的是啥,.Net 错误定位也很方便,一旦出错就会弹出错误信息窗,可以查调用堆栈就能定位到出错函数。
核心问题是换个位置运行就不报错了。
@seabluescn: 我觉得不必纠结于为什么换个位置就好了。从错误入手,找到问题的根源,到时候就知道为什么换个地方就好了。不过换个地方就好了这个信息也可以参考,比如是不是和读写文件有关
去报错的机器上 本地调试
报错的机器一般在客户那边,不太方便调试。要命的是在本地无论如何都复现不了这个故障。
@seabluescn: 找到报错的位置,记录详细日志
@seabluescn: 只能让客户配合下 可以远程啊
可以试试在代码里用绝对路径,相对路径可能会报错
是用的绝对路径,文件访问报错时,一般提示文件名包含特殊字符,但复制出来的程序就不会报错。访问的是同一个文件。
核心问题是:程序之前是好的,用一段时间才报错,而且概率不大。所以绝对不是一个常规逻辑问题。
@seabluescn: 提示文件名包含特殊字符,那就是你程序哪里修改了文件名吧
或者你说一下你的文件名的生成方式