Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-14, 20:46   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 流氓在加载Matlab程序集时等待40秒...如何诊断原因?

我有一个非常奇怪的问题:我已经将一些Matlab代码编译到了程序集中。我使用以下C#行实例化该类:

MatPhiLib temp = new MatPhiLib(); // This line takes 40 seconds to execute. 第一次调用此行时,始终只需要40秒即可执行。随后的呼叫是瞬时的。事情发生了变化,因为我四个月前最后一次查看代码并没有花这么长时间。

专家可以建议一种获得可见性的方法以查看此处发生的情况吗?

更新:

注意,UltraEdit(我的编辑器)也恰好需要40秒才能启动。我认为那里存在一些联系,因为这也从未发生过。

更新:

发现了问题:这是我的新NetGear Stora NAS导致淫秽网络超时的问题。当我拔下电源时,一切都开始像润滑的闪电一样工作。

可能一千头骆驼的跳蚤在负责史诗般的工程设计的驴脑家伙的腋下感染。



回答:
  1. 在40秒的等待期的早期,进入正在运行的进程(Debug –Break All)。
  2. 打开“ 调用堆栈”窗口(“调试”→“ Windows”→“调用堆栈”)。
  3. 如果将MatLib程序集用作外部库而不是解决方案中的项目,请右键单击“ 调用堆栈”窗口,然后在上下文菜单上选择“ 显示外部代码”
  4. 打开“ 线程”窗口(“调试”→“ Windows”→“线程”)。
  5. 逐步处理线程,一个一个地选择它们,然后查看“ 调用堆栈”窗口。您应该能够从前几帧中看到每个线程在做什么—您应该能够看到MatLib代码中引起延迟的位置。 (等待句柄中的线程正在等待其他线程完成工作,或者处于空闲状态,正在等待其他线程创建工作以供它们处理。)
我的猜测是,该库将尝试进行某种形式的网络调用,并且40秒是该调用的超时。您应该能够使用从上述步骤中学到的信息来查找库中的问题。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 04:58


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.