gpt4 book ai didi

swift - 当程序因 EXC_BAD_ADDRESS 而崩溃时,代码 EXEC_I386_GPFLT 是什么意思

转载 作者:行者123 更新时间:2023-11-28 06:47:47 25 4
gpt4 key购买 nike

我的 OSX 程序因 EXC_BAD_ADDRESS 和代码 EXEC_I386_GPFLT 而崩溃。

我没有任何常见的消息,比如没有找到选择器......

该程序之前可以运行,我只是更改了调用系统。这是一个自制的热键管理器,我现在使用MASShorcut。

我怀疑是线程问题,我想我会用 dispatch_xx block 解决这个问题。

所以实际的问题是:EXEC_I386_GPFLT 是什么意思?

func saveFile() {
// crashes on following line
let savePanel = NSSavePanel(contentRect: NSRect(), styleMask: NSTitledWindowMask, backing: NSBackingStoreType.Buffered, `defer`: true)
savePanel.canCreateDirectories = true
...

The stack trace when it crashes

最佳答案

EXEC_I386_GPFLT 是一个一般保护错误

这通常意味着您的应用程序试图取消引用一个地址,该地址不仅指向内存的某些不可读部分,而且非常荒谬并且引用了根本不可能是内存的东西(在 64 位系统上,实际上并没有例如,64 位可寻址空间,因为某些位在某些上下文中用作元数据。)

鉴于崩溃和调用发生在主线程上,它看起来不像是线程问题(至少,没有给出的证据)。

通常,您使用 NSSavePanel() 创建一个保存面板。鉴于它在 alloc/init 中崩溃,我建议转向创建一个的标准方法。

关于swift - 当程序因 EXC_BAD_ADDRESS 而崩溃时,代码 EXEC_I386_GPFLT 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35830354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com