网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月07日漏签0天
c#吧 关注:188,361贴子:822,482
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 37回复贴,共1页
<<返回c#吧
>0< 加载中...

上位机崩溃原因排查

  • 只看楼主
  • 收藏

  • 回复
  • 1045341202
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
使用C#编写上位机实现如下功能
1. 用485与设备通讯
2. 记录测试数据,并实时保存(单次测试周期预计半年甚至一年)
开启上位机测试的几天或十几天后,发现上位机消失了,数据在某个时刻截止。可是日志文件里面没有任何记录。
测试了两三次,均是这样。想知道该从哪方面排查。。。
日志记录相关代码如下
1. 在主要函数的内部都加了try, catch来捕捉记录
try
{功能代码}
catch (Exception ex)
{
string logMessage = $"上位机崩溃06\nException Type: {ex.GetType().Name}\nException Message: {ex.Message}\nStack Trace: {ex.StackTrace}";
Logging(logMessage); //记录到日志文件中
}
2. 使用函数来监控上位机关闭的信息
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
uint close_flag = 0;
string close_Result = "有原因";
uint temp2 = 0; //根据原因选择是否关闭,0可以关闭,1可以不关闭
switch (e.CloseReason)
{
case CloseReason.ApplicationExitCall: //应用程序要求关闭
case CloseReason.None: //不明原因
case CloseReason.TaskManagerClosing://任务管理器关闭
case CloseReason.WindowsShutDown: //操作系统准备关机
temp2 = 0;
break;
case CloseReason.FormOwnerClosing: //自身窗口上的关闭按钮
case CloseReason.MdiFormClosing: //MDI窗体关闭时事件
case CloseReason.UserClosing: //用户通过UI关闭窗口,或通过Alt+F4关闭窗口
temp2 = 1; //可以不关闭
break;
default:
temp2 = 0;
close_Result = "意外";
break;
}
if (temp2 == 1)
{
e.Cancel = true;
MessageBox.Show("正在测试,无法关闭!");
}
else
{
close_flag = 1;
}
string text_log = "0x0024 " + close_Result + "关闭上位机 e.CloseReason." + e.CloseReason.ToString();
Logging(text_log); //记录到日志文件
if (close_flag == 1)
{
Logging("上位机已关闭,结束运行!"); //记录到日志文件
}
else
{
Logging("上位机未关闭,继续运行!"); //记录到日志文件
}
}
catch (Exception ex)
{
string logMessage = $"上位机崩溃15\nException Type: {ex.GetType().Name}\nException Message: {ex.Message}\nStack Trace: {ex.StackTrace}";
Logging(logMessage); //记录到日志文件
}
}


  • 1045341202
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有大神帮忙提点建议么,目前没有好的排查思路


2025-06-07 06:06:55
广告
  • 贴吧用户_0E8MtUX
  • c#探索者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我猜这个函数有BUG: Logging(); //记录到日志文件中
对外存操作每一行都用 try catch


  • 1045341202
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
此处贴出日志记录的函数代码
_
public void Logging(string Content)
{
FileStream fs_log = new FileStream(@"Record.log", FileMode.OpenOrCreate, FileAccess.Write); //日志记录
StreamWriter sw_log = new StreamWriter(fs_log);//日志记录
sw_log.BaseStream.Seek(0, SeekOrigin.End);
if (Content == "————————————————")
{
sw_log.WriteLine(""); //若首次打开上位机,则加一个空行
}
string text = DateTime.Now.ToString() + " " + Content;
sw_log.WriteLine(text);
sw_log.Flush();
sw_log.Close();
fs_log.Close();
}


  • 贴吧用户_0E8MtUX
  • c#探索者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
FileStream fs_log 如果功能代码同时抛两个异常,这个文件数据流就会抛异常。
不知道会不会被垃圾回收,比如手动释放资源 fs_log.Dispose();
或者 using(FileStream fs_log){}
用别人封装好的函数方便。
public void Logging(string Content) {
if (Content == "————————————————") {
Content += "\r\n";
}
Content = $"{DateTime.Now} {Content}\r\n";
try { File.AppendAllText("Record.log", Content); } catch { }
}


  • 1045341202
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
感谢6楼回复,已将日志记录代码改为如下形式
public void Logging(string Content)
{
try
{
string text = DateTime.Now.ToString() + " " + Content;
if (Content == "————————————————")
{
text = "\r\n" + text;
}
text = "\r\n" + text;
File.AppendAllText("Record.log", text);
}
catch
{
}
}


  • 秋塘明月
  • c#码农
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如果是主函数都try不住的异常,是不是操作dll了。


  • 贴吧用户_0E8MtUX
  • c#探索者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
StringBuilder sb日志缓存 = new StringBuilder( );
public void Logging(string Content) {
if (Content == "————————————————") {
sb日志缓存.AppendLine(Content);
} else {
sb日志缓存.AppendFormat("\r\n {0} {1}", DateTime.Now, Content);
}
if (sb日志缓存.Length > 64 * 1024) {
try {
File.AppendAllText("Record.log", sb日志缓存.ToString( ));
sb日志缓存.Clear( );
} catch { }
}
}
比如这样


2025-06-07 06:00:55
广告
  • 双子727
  • c#求知者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
带带


  • 我是真滴绣
  • c#探索者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
加个全局异常捕获不就知道哪里异常了嘛


  • 取名真的超费劲
  • c#码农
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如果无限循环,创建了以后不释放,慢慢的会爆内存然后崩溃吧?try也没用吧?有没有观察过内存有没有一直涨?


  • 1045341202
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是原始代码运行了几分钟的进程截图,看起来内存是有略微上升。初始21M,后面是24M


  • 沐影清歌
  • c#大菜鸟
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有没有在Windows事件查看器里找过软件崩溃日志呢,一般都可以找到一些详细的信息。


  • 1045341202
  • c#小菜鸟
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个是资源管理器的截图,内存从昨晚的107M变为现在的144.5M


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 37回复贴,共1页
<<返回c#吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示