Xcode 8 文件中的断点不起作用

Xcode 8 Breakpoint in file not working

我的 Xcode 项目中有一个文件,SignInViewController.swift,不知从哪里冒出来,开始不在断点处停止。我在 viewDidLoad() 中有一个断点,在 viewDidAppear() 中有一些断点。我在这两个函数中有几个 print() 调用以确保它们正在执行。断点在其他文件中工作正常,包括 AppDelegate.swift.

有一次,当我试图找出问题所在时,我注意到在构建项目时会出现一个错误 Invalid redeclaration of 'signInViewController.swift' 然后在构建完成之前消失,应用程序将运行 很好,除了文件中的断点。 signInViewController.swift 是几个月前我将其重命名为 SignInViewController.swift 之前文件的旧名称。直到出现断点问题,我才看到它,因为我已经清理了项目的构建文件夹和 Xcode 的派生数据,所以我无法复制。我有一种感觉,它正在考虑问题,但我不确定 how/why。

无论如何,这是我已经尝试过的方法。它们中的大多数只是用于一般情况下不起作用的断点,但我认为我应该列出它们,即使事实并非如此:

  1. Clean Project
  2. Clean Build Folder
  3. Clear Xcode's DerivedData
  4. Making sure breakpoints are enabled (Cmd Y)
  5. Build Settings are set to Debug
  6. Always Show Disassembly enabled and disabled
  7. Debugging enabled in run config

非常感谢任何帮助。

更新 1(仍然没有运气):

  1. Tried deleting the Xcode preference as suggested by neprocker's answer

更新 2:

我已将断点问题隔离到 viewDidLoad() 并且 viewDidAppear() 文件中其他地方的断点正在工作。

更新 3:

隔离到 viewDidLoad() 中的特定代码块。 viewDidAppear() 不过还是不行。

有时 Xcode userdefaults 本身的值可能已经改变, 有时,我遇到了类似的问题,调试器在 stacktrace 处停止 几种清除方法

1.Delete the Xcode preference
defaults delete com.apple.dt.Xcode

其他问题可能是目标的优化级别,将其更改为 none 将在调试器处停止

我不太确定这最终是如何修复它的,但我将问题隔离到 viewDidLoad() 中的特定代码块。然后我注释掉了该代码并构建了 运行 项目。然后我取消注释代码并再次构建并 运行 它并且断点起作用了。

对我有帮助的是删除位于目录中项目目录(*.xcodeproj)下的文件Breakpoints_v2.xcbkptlist:xcuserdata/Fred.xcuserdatad/xcdebugger(替换"Fred" 用你的用户名)。使用终端程序去那里。

我在旧项目中遇到了同样的问题。 Select Product(位于顶部菜单栏)-> Scheme -> EditScheme 我通过点击 "Debug Executable" 解决了这个问题,如图所示。也许这对其他人也有帮助。

我通过转到我的 Xcode 项目的 'Build Settings' 并将 'Generate Debug Symbols' 设置为 'Yes'

来解决这个问题

我在 xcode 9.

中也遇到过同样的问题

我通过以下方式解决了这个问题:

  • 删除XCode默认值使用下面的终端命令

    defaults delete com.apple.dt.Xcode.LSSharedFileList   
    defaults delete com.apple.dt.Xcode
    
  • 清除(或删除)Xcode 的派生数据来自

    /Users/[Your Mac Username]/Library/Developer/Xcode/DerivedData
    
  • 从应用程序中删除(或卸载)Xcode.app,然后重新启动 PC

  • 安装 Xcode9 的新副本

  • [强制] 为您的应用项目设置用户权限,例如

    chmod -R 777 "/Users/[Your Mac Username]/Desktop/TestApp/"
    

    [其中 TestApp 是保留在桌面上的应用程序项目]

  • 打开项目并检查构建设置是否设置为调试

  • 确保断点已启用并在代码中设置调试点

下面的补丁适合我。从菜单栏中,select Product -> Scheme -> Edit Scheme -> Select Profile -> Set Build Configuration to BUILD。请查看 below-attached 屏幕截图。

在我的例子中,断点没有在一个回调中命中,所以我在调试的项目目标构建设置中将 "Swift Compiler" "Optimization Level" 更改为 "No optimization",它开始在 Xcode 9.3 以及 AppCode。

就我而言,结果是 Dev 构建配置配置不正确。

Dev 配置应从 Debug 复制,而不是 Release.

您可以在 Build settings 中使用 debug 一词进行搜索以查看差异。

例如:

希望对您有所帮助。

在@neprocker 所说的基础上,我 "Optimize for Speed" debug/release。只需更改调试值,我就可以开始了。

在标准编辑器中打开 viewController.swift 文件进行初始查看,并在 viewDidLoad 和 运行 应用程序中打印一些内容。如果打印工作正常,现在请确保您已选择 viewController.swift 在辅助编辑器中正确归档。