I finally solved this. My app had three Objective-C breakpoints. I don't remember what they're for and probably don't need them since I rewrote the app in Swift. I did find this old SO post that I had upvoted, so that's probably what prompted me to add the objc_autoreaseNoPool breakpoint.
Anyway, when I removed that breakpoint, the problem immediately disappeared. Now I can finally debug on iOS 18 and macOS 15.