NavisworksTransport/doc/guide/log_analysis_guide.md

6.4 KiB
Raw Blame History

分层拆分崩溃问题日志分析指南

日志文件位置

日志文件保存在桌面上:NavisworksTransport_Debug.log

详细日志记录内容

现在分层拆分功能已经添加了非常详细的日志记录,包括:

1. 分层拆分管理器日志 (ModelSplitterManager)

会话开始标记

============================================================
[SESSION] 新会话开始 - 2024-12-19 14:30:25
============================================================
[INFO] [ModelSplitter] ========== 开始执行分层拆分 ==========
[INFO] [ModelSplitter] 分层策略: ByFloor
[INFO] [ModelSplitter] 输出目录: C:\Users\Desktop\Output
[INFO] [ModelSplitter] 属性名称: Level
[INFO] [ModelSplitter] 文件命名模式: {ProjectName}_{LayerName}

系统状态监控

[INFO] [ModelSplitter] 系统内存使用: 256 MB
[INFO] [ModelSplitter] 当前进程内存: 512 MB

每个分层处理详情

[INFO] [ModelSplitter] ========== 开始处理分层: Floor_01 ==========
[INFO] [ModelSplitter] 分层元素数量: 1250
[INFO] [ModelSplitter] 输出文件路径: C:\Output\Project_Floor_01.nwd
[INFO] [ModelSplitter] 处理前内存使用: 280 MB
[INFO] [ModelSplitter] 开始导出文件...
[INFO] [ModelSplitter] 处理后内存使用: 320 MB

稳定状态管理

[INFO] [ModelSplitter] 开始确保Navisworks稳定状态...
[INFO] [ModelSplitter] 当前文档: MyProject.nwd
[INFO] [ModelSplitter] 模型数量: 3
[INFO] [ModelSplitter] 当前选择项数量: 0
[INFO] [ModelSplitter] 重置所有隐藏状态...
[INFO] [ModelSplitter] 隐藏状态重置完成
[INFO] [ModelSplitter] 清除当前选择...
[INFO] [ModelSplitter] 选择清除完成

2. 文件导出器日志 (NavisworksFileExporter)

导出会话开始

============================================================
[INFO] [FileExporter] ========== 开始文件导出 ==========
[INFO] [FileExporter] 元素数量: 1250
[INFO] [FileExporter] 输出路径: C:\Output\Project_Floor_01.nwd
[INFO] [FileExporter] 导出策略: VisibilityControl
[INFO] [FileExporter] 文件格式: nwd

内存状态监控

[INFO] [FileExporter] 导出前内存使用: 280 MB
[INFO] [FileExporter] 导出前进程内存: 520 MB

文件保存重试机制

[INFO] [FileExporter] 开始保存文档到: C:\Output\Project_Floor_01.nwd
[INFO] [FileExporter] 尝试保存文档,第 1 次
[INFO] [FileExporter] 文档保存成功: C:\Output\Project_Floor_01.nwd, 大小: 15728640 字节

3. 错误和异常日志

详细错误信息

[ERROR] [ModelSplitter] 处理分层异常: 内存不足
[ERROR] [ModelSplitter] 异常堆栈: at NavisworksTransport.ModelSplitterManager...
[ERROR] [FileExporter] 第 1 次保存尝试失败: 文件被占用
[INFO] [FileExporter] 等待 1000ms 后重试...

错误恢复过程

[INFO] [ModelSplitter] 开始错误恢复...
[INFO] [ModelSplitter] 重置所有可见性状态
[INFO] [ModelSplitter] 清除选择
[INFO] [ModelSplitter] 强制刷新视图
[INFO] [ModelSplitter] 错误恢复完成

如何分析崩溃问题

1. 查看最新的会话日志

打开桌面上的 NavisworksTransport_Debug.log 文件,找到最新的会话分隔符:

============================================================
[SESSION] 新会话开始 - [最新时间]
============================================================

2. 关键崩溃点检查

A. 内存使用情况

查找内存使用记录,看是否有内存急剧增长:

# 搜索内存相关日志
内存使用: 256 MB -> 512 MB -> 1024 MB -> 崩溃

B. 可见性操作

查找可见性重置操作是否成功:

# 查找这些关键步骤
[INFO] [ModelSplitter] 重置所有隐藏状态...
[INFO] [ModelSplitter] 隐藏状态重置完成  # 如果没有这行,说明在重置时崩溃

C. 文件保存操作

查找文件保存过程:

[INFO] [FileExporter] 尝试保存文档,第 1# 如果后面没有"保存成功"或"保存失败",说明在保存时崩溃

D. 异常处理

查找ERROR级别的日志

[ERROR] [ModelSplitter] 处理分层异常: [具体错误信息]
[ERROR] [FileExporter] 导出异常: [具体错误信息]

3. 常见崩溃模式

模式1内存耗尽崩溃

[INFO] 系统内存使用: 256 MB
[INFO] 系统内存使用: 512 MB
[INFO] 系统内存使用: 1024 MB
[INFO] 系统内存使用: 2048 MB
# 然后突然中断,没有后续日志

模式2可见性操作崩溃

[INFO] [ModelSplitter] 重置所有隐藏状态...
# 然后突然中断,没有"重置完成"日志

模式3文件保存崩溃

[INFO] [FileExporter] 尝试保存文档,第 1 次
# 然后突然中断,没有保存结果日志

模式4COM对象访问崩溃

[ERROR] [ModelSplitter] 确保稳定状态失败: 对象引用未设置到对象的实例
[ERROR] [FileExporter] 可见性控制导出失败: 无法访问已释放的对象

快速日志查看方法

方法1使用记事本

  1. 打开桌面上的 NavisworksTransport_Debug.log
  2. Ctrl+End 跳到文件末尾
  3. 向上滚动查看最新的日志

方法2使用命令行推荐

# 查看最后100行日志
tail -n 100 "%USERPROFILE%\Desktop\NavisworksTransport_Debug.log"

# 或者使用PowerShell
Get-Content "$env:USERPROFILE\Desktop\NavisworksTransport_Debug.log" -Tail 100

方法3搜索关键词

在记事本中按 Ctrl+F 搜索:

  • ERROR - 查找所有错误
  • 异常 - 查找异常信息
  • 崩溃 - 查找崩溃相关信息
  • 内存使用 - 查找内存状态
  • SESSION - 查找会话开始

提供技术支持时需要的信息

如果问题仍然存在,请提供以下日志片段:

  1. 最新会话的完整日志从SESSION开始到结束或中断
  2. 最后的ERROR日志(如果有的话)
  3. 内存使用趋势(多个内存使用记录)
  4. 崩溃前的最后几行日志

日志文件管理

清理日志文件

如果日志文件太大,可以在代码中调用:

LogManager.ClearLog(); // 清空日志文件

日志文件位置

  • 默认位置:%USERPROFILE%\Desktop\NavisworksTransport_Debug.log
  • 可以通过 LogManager.LogFilePath 属性获取确切路径

现在你可以运行分层拆分功能,如果再次崩溃,日志文件会记录详细的执行过程,帮助我们精确定位崩溃的原因和位置。