M 8.0.1,Windows 7。
调试问题。
有时当我启动M并打开我的笔记本(在我关闭它之前已启用动态)时,我收到此消息
问题是,无论我点击等待还是禁用动态,消息都会不断回来。
我必须从Windows任务管理器终止进程本身(即Mathematica)才能摆脱这种情况。
很明显,我的代码中似乎有一个动态错误。
我的问题是:M有没有办法告诉我哪些动态对象导致了这个问题?并且任何想法为什么告诉它禁用动态更新在这里没有帮助(因为我不断得到消息)。
感谢
答案 0 :(得分:6)
通过评估,你可能会有一些运气:
SetOptions[$FrontEnd, PrintKernelDynamicTraffic -> True]
这会导致Mathematica FrontEnd在向内核发送动态评估时将消息打印到系统控制台(在Mac上,我不知道它在Windows上的位置)。如果您可以在消息出现时找到要打印出的最后一个动态评估,那么该评估应该花费很长时间进行评估。
您可能希望在完成调试后禁用此功能,因此它不会使用数百万条调试消息填充系统日志。
答案 1 :(得分:4)
您可能会发现由David Bailey编写的DebugTrace非常有用。它是一个调试器,也可用于调试动态结构。在本文档中,有一个关于如何调试此类程序的示例。基本上你在代码中设置一个断点,运行它,完成后你会看到有关发生时间的详细信息。
总的来说,我强烈建议尝试一下,不仅仅是动态功能。