想问问以前有没有人遇到过这样的问题。我有 8.01 版,在 Windows 7 上,64 位。SP1。
当我向我正在编写的一些代码中添加 Tooltip[] 命令时,我一直在试图找出为什么会出现 Mathematica 内核崩溃。
笔记本有 Wolfram 演示样式表(用于进行演示的示例样式表)。它是一个 Manipulate,都在一个单元格中。
当我将代码复制到具有默认样式表的新笔记本中时,崩溃就消失了!我无法在新笔记本中重现崩溃。
完全没有代码更改。只需复制整个单元格并将其粘贴到新笔记本中即可。唯一的区别是一个有演示样式表,一个是默认样式表。当我将新笔记本的类型表更改为演示时,我注意到工具提示不像以前那样工作。当我以这种风格使用示例笔记本时,当我开始使用工具提示移动鼠标时,内核崩溃。
为了确保,我做了几次。结果相同。一旦我添加了 Tooltip[],内核只会在样式表演示时立即崩溃。
我的问题:有没有人见过这样的行为?如果可以的话,我可以让这两个笔记本可用。
我得到的崩溃是:
Problem signature:
Problem Event Name: BEX64
Application Name: Mathematica.exe
Application Version: 8.0.31.32201
Application Timestamp: 4d65e0e8
Fault Module Name: StackHash_2766
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 00000000
Exception Offset: 0000000000000001
Exception Code: c0000005
Exception Data: 0000000000000008
OS Version: 6.1.7601.2.1.0.768.3
Locale ID: 1033
Additional Information 1: 2766
Additional Information 2: 2766660d255034f6e73a8cd527b6f51e
Additional Information 3: 8ab7
Additional Information 4: 8ab74987ae95fade363a8e7256e3890f
我确实向 WRI 发送了错误报告。
我的问题是:有没有人遇到过样式表更改可以使代码表现不同的问题?为什么样式表更改会导致这样的问题?
更新1:
我能够制作一个小例子来说明问题的一部分。我正在制作另一个显示崩溃本身的小例子。但是下面这个例子就说明了问题,就是在样式表演示的时候Tooltip的工作方式不一样。首先,这是一个屏幕截图,并排,相同的代码,左边是默认样式表,右边是演示样式
(在图片下方,我粘贴了源代码,以及如何重现问题的步骤)
Manipulate[
EventHandler[Dynamic[Graphics[
{
Circle[{0,0},1],
Dynamic@Tooltip[Text[Style["O",Red,16] ,pt],Style[pt]]
},
ImageSize->250, PlotRange->{{-1,1},{-1,1}}
],ContinuousAction->True],
"MouseDragged":>
( pt=MousePosition["Graphics"] )
],
{{pt,{0,0}},ControlType->None},
TrackedSymbols:> {None},
ContinuousAction->True
]
脚步:
- 将以上代码粘贴到新样式表中,样式默认。拖动点,当您用鼠标拖动点时,您应该会一直看到坐标显示。
- File->New->Demonstration,然后在 Manipulate 单元格中粘贴相同的代码,替换已经存在的小模板。
- 现在做同样的事情,拖动点。您将看到工具提示不会在鼠标拖动时显示。它仅在将鼠标稳定在该点上时才会显示。
动力学中有不同的行为似乎导致了这种情况,或者这种风格的其他原因。
我尝试了不同的样式表,工具提示在那里工作正常。只有使用演示样式表时,工具提示才会出现此问题。
如果有人对此有解决方案,那就太好了。因为我想在演示中使用工具提示。
我将尝试举一个导致崩溃的示例。
更新:
我已经从 WRI 技术支持那里得到了回复。这是一个样式表问题。同时,作为解决此问题的方法,来自技术支持的建议:
I was able to reproduce the kernel crash. It looks like a demonstration
stylesheet issue related to imagesize fit.
At the top of the demonstration notebook there is tab called 'Tools',
clicking on it gives you an option called 'Resize Notebook to Fit'. On
resizing the notebook and saving it the kernel crash does not happen.
感谢世界资源研究所的技术支持。
2011 年 12 月 2 日更新 根据下面的 John Fultz 回答,我现在要结束这个问题。谢谢约翰。