我正在为需要使用 AppleScript 的 OSX 编写单声道应用程序。我正在使用 Monodevelop 源中的 AppleScript 类,该类在大多数情况下都可以正常工作,但时不时会导致 SIGSEGV 并且我的程序崩溃。
作为 Mono 和 OSX 的新手,我不知道如何调试这个问题。即使我在调试器中运行,MonoDevelop 也不会中断,并且 C# 异常处理似乎没有任何帮助。有没有办法弄清楚发生了什么?现在看来,我可以保护我的程序的唯一方法是实际为 AppleScript 代码生成一个单独的进程。
我运行的脚本始终是相同的,并且 99% 的时间它运行时都没有问题。这是堆栈跟踪:
Stacktrace:
at (wrapper managed-to-native) MonoDevelop.MacInterop.AppleScript.OSACompile (MonoDevelop.MacInterop.ComponentInstance,MonoDevelop.MacInterop.AEDesc&,MonoDevelop.MacInterop.OsaMode,MonoDevelop.MacInterop.OsaId&) <IL 0x00028, 0xffffffff>
at MonoDevelop.MacInterop.AppleScript.Run (bool,MonoDevelop.MacInterop.AEDesc&,string&) [0x0007f] in /Users/kristian/Repositories/Kristian/projects/CherryTomato_NT/mono_osx/CherryTomato.Core_OSX/MacInterop/AppleScript.cs:131
at MonoDevelop.MacInterop.AppleScript.Run (bool,MonoDevelop.MacInterop.AEDesc&) [0x00000] in /Users/kristian/Repositories/Kristian/projects/CherryTomato_NT/mono_osx/CherryTomato.Core_OSX/MacInterop/AppleScript.cs:103
at MonoDevelop.MacInterop.AppleScript.Run (string) [0x00010] in /Users/kristian/Repositories/Kristian/projects/CherryTomato_NT/mono_osx/CherryTomato.Core_OSX/MacInterop/AppleScript.cs:83
...
输出中还有很多其他信息,如有必要,我可以发布它们,但它看起来相当通用。