当程序因 EXC_BAD_ADDRESS 而崩溃时,代码 EXEC_I386_GPFLT 是什么意思
What does mean code EXEC_I386_GPFLT when program crashes with EXC_BAD_ADDRESS
我的 OSX 程序崩溃 EXC_BAD_ADDRESS,代码为 EXEC_I386_GPFLT。
我没有任何常见消息,例如找不到选择器...
程序之前是可以运行的,我只是更改了调用系统。是自制的热键管理器,我现在用的是MASShorcut
我怀疑是线程问题,我想我会用 dispatch_xx 块解决这个问题。
所以实际的问题是:EXEC_I386_GPFLT 是什么意思?
func saveFile() {
// crashes on following line
let savePanel = NSSavePanel(contentRect: NSRect(), styleMask: NSTitledWindowMask, backing: NSBackingStoreType.Buffered, `defer`: true)
savePanel.canCreateDirectories = true
...
EXEC_I386_GPFLT
是 一般保护错误 。
这通常意味着您的应用程序试图取消引用一个地址,该地址不仅指向内存的某些不可读部分,而且非常荒谬并且引用了根本不可能是内存的内容(在 64 位系统上,没有'不是真正的 64 位可寻址 space,因为某些位在某些上下文中用作元数据,例如。)
鉴于崩溃和调用发生在主线程上,它看起来不像是线程问题(至少,没有给出的证据)。
通常,您使用 NSSavePanel()
创建一个保存面板。鉴于它在 alloc/init 中崩溃,我建议转向创建一个的标准方法。
我的 OSX 程序崩溃 EXC_BAD_ADDRESS,代码为 EXEC_I386_GPFLT。
我没有任何常见消息,例如找不到选择器...
程序之前是可以运行的,我只是更改了调用系统。是自制的热键管理器,我现在用的是MASShorcut
我怀疑是线程问题,我想我会用 dispatch_xx 块解决这个问题。
所以实际的问题是:EXEC_I386_GPFLT 是什么意思?
func saveFile() {
// crashes on following line
let savePanel = NSSavePanel(contentRect: NSRect(), styleMask: NSTitledWindowMask, backing: NSBackingStoreType.Buffered, `defer`: true)
savePanel.canCreateDirectories = true
...
EXEC_I386_GPFLT
是 一般保护错误 。
这通常意味着您的应用程序试图取消引用一个地址,该地址不仅指向内存的某些不可读部分,而且非常荒谬并且引用了根本不可能是内存的内容(在 64 位系统上,没有'不是真正的 64 位可寻址 space,因为某些位在某些上下文中用作元数据,例如。)
鉴于崩溃和调用发生在主线程上,它看起来不像是线程问题(至少,没有给出的证据)。
通常,您使用 NSSavePanel()
创建一个保存面板。鉴于它在 alloc/init 中崩溃,我建议转向创建一个的标准方法。