@mmerterden/multi-agent-pipeline 20.6.0 → 20.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/LICENSE +0 -10
- package/docs/facts.json +1 -1
- package/manifest.json +328 -329
- package/package.json +2 -2
- package/pipeline/multi-agent-refs/features/design-conformance.md +62 -64
- package/pipeline/scripts/_notices.mjs +12 -1
- package/pipeline/scripts/gen-skills-index.mjs +1 -1
- package/pipeline/skills/.skill-manifest.json +106 -106
- package/pipeline/skills/shared/README.md +71 -71
- package/pipeline/skills/shared/external/agent-introspection-debugging/SKILL.md +1 -0
- package/pipeline/skills/shared/external/alarmkit/SKILL.md +373 -381
- package/pipeline/skills/shared/external/alarmkit/evals/evals.json +23 -18
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +328 -378
- package/pipeline/skills/shared/external/android-architecture/SKILL.md +2 -0
- package/pipeline/skills/shared/external/android-performance/SKILL.md +2 -0
- package/pipeline/skills/shared/external/android-security/SKILL.md +2 -0
- package/pipeline/skills/shared/external/app-clips/SKILL.md +260 -160
- package/pipeline/skills/shared/external/app-clips/evals/evals.json +27 -27
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +150 -83
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +135 -83
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +143 -85
- package/pipeline/skills/shared/external/app-intents/SKILL.md +302 -304
- package/pipeline/skills/shared/external/app-intents/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +594 -894
- package/pipeline/skills/shared/external/app-store-optimization/SKILL.md +339 -277
- package/pipeline/skills/shared/external/app-store-optimization/evals/evals.json +27 -23
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +105 -122
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +143 -166
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +307 -326
- package/pipeline/skills/shared/external/app-store-review/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +105 -67
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +114 -101
- package/pipeline/skills/shared/external/apple-on-device-ai/SKILL.md +333 -360
- package/pipeline/skills/shared/external/apple-on-device-ai/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +215 -322
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +161 -256
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +277 -387
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +196 -210
- package/pipeline/skills/shared/external/authentication/SKILL.md +265 -381
- package/pipeline/skills/shared/external/authentication/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +133 -178
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +111 -147
- package/pipeline/skills/shared/external/avkit/SKILL.md +267 -364
- package/pipeline/skills/shared/external/avkit/evals/evals.json +26 -26
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +375 -493
- package/pipeline/skills/shared/external/background-processing/SKILL.md +270 -382
- package/pipeline/skills/shared/external/background-processing/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +169 -317
- package/pipeline/skills/shared/external/backlog/BACKLOG.md +1 -1
- package/pipeline/skills/shared/external/backlog/SKILL.md +56 -33
- package/pipeline/skills/shared/external/callkit-voip/SKILL.md +290 -371
- package/pipeline/skills/shared/external/callkit-voip/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +175 -343
- package/pipeline/skills/shared/external/ci-cd-pipelines/SKILL.md +1 -0
- package/pipeline/skills/shared/external/cloudkit-sync/SKILL.md +292 -381
- package/pipeline/skills/shared/external/cloudkit-sync/evals/evals.json +33 -30
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +227 -355
- package/pipeline/skills/shared/external/compose-components/SKILL.md +2 -0
- package/pipeline/skills/shared/external/compose-navigation/SKILL.md +3 -2
- package/pipeline/skills/shared/external/compose-testing/SKILL.md +2 -0
- package/pipeline/skills/shared/external/contacts-framework/SKILL.md +197 -346
- package/pipeline/skills/shared/external/contacts-framework/evals/evals.json +19 -21
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +169 -308
- package/pipeline/skills/shared/external/core-bluetooth/SKILL.md +226 -376
- package/pipeline/skills/shared/external/core-bluetooth/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +257 -337
- package/pipeline/skills/shared/external/core-data/SKILL.md +292 -368
- package/pipeline/skills/shared/external/core-data/evals/evals.json +30 -27
- package/pipeline/skills/shared/external/core-motion/SKILL.md +235 -324
- package/pipeline/skills/shared/external/core-motion/evals/evals.json +31 -27
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +210 -310
- package/pipeline/skills/shared/external/core-nfc/SKILL.md +292 -366
- package/pipeline/skills/shared/external/core-nfc/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +233 -329
- package/pipeline/skills/shared/external/coreml/SKILL.md +323 -367
- package/pipeline/skills/shared/external/coreml/evals/evals.json +24 -21
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +562 -565
- package/pipeline/skills/shared/external/council/SKILL.md +1 -0
- package/pipeline/skills/shared/external/cryptokit/SKILL.md +253 -394
- package/pipeline/skills/shared/external/cryptokit/evals/evals.json +20 -18
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +299 -488
- package/pipeline/skills/shared/external/css-modern/SKILL.md +1 -0
- package/pipeline/skills/shared/external/database-patterns/SKILL.md +1 -0
- package/pipeline/skills/shared/external/debugging-instruments/SKILL.md +270 -323
- package/pipeline/skills/shared/external/debugging-instruments/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +167 -315
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +140 -193
- package/pipeline/skills/shared/external/device-integrity/SKILL.md +230 -353
- package/pipeline/skills/shared/external/device-integrity/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +159 -197
- package/pipeline/skills/shared/external/energykit/SKILL.md +225 -392
- package/pipeline/skills/shared/external/energykit/evals/evals.json +29 -28
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +174 -470
- package/pipeline/skills/shared/external/eventkit-calendar/SKILL.md +261 -383
- package/pipeline/skills/shared/external/eventkit-calendar/evals/evals.json +25 -22
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +165 -268
- package/pipeline/skills/shared/external/evidence-github/SKILL.md +2 -0
- package/pipeline/skills/shared/external/evidence-registry/SKILL.md +2 -0
- package/pipeline/skills/shared/external/gradle-kotlin-dsl/SKILL.md +2 -0
- package/pipeline/skills/shared/external/healthkit/SKILL.md +252 -303
- package/pipeline/skills/shared/external/healthkit/evals/evals.json +24 -23
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +369 -523
- package/pipeline/skills/shared/external/homekit-matter/SKILL.md +233 -348
- package/pipeline/skills/shared/external/homekit-matter/evals/evals.json +27 -22
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +199 -305
- package/pipeline/skills/shared/external/html-semantic/SKILL.md +1 -0
- package/pipeline/skills/shared/external/humanizer/SKILL.md +1 -0
- package/pipeline/skills/shared/external/ios-accessibility/SKILL.md +368 -340
- package/pipeline/skills/shared/external/ios-accessibility/evals/evals.json +28 -27
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +314 -260
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +97 -67
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +165 -101
- package/pipeline/skills/shared/external/ios-coding-standard/SKILL.md +1 -0
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +258 -371
- package/pipeline/skills/shared/external/ios-localization/evals/evals.json +23 -23
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +283 -491
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +313 -440
- package/pipeline/skills/shared/external/ios-module-structure/SKILL.md +1 -0
- package/pipeline/skills/shared/external/ios-networking/SKILL.md +265 -341
- package/pipeline/skills/shared/external/ios-networking/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +425 -652
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +143 -285
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +93 -53
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +231 -456
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +517 -784
- package/pipeline/skills/shared/external/ios-security/SKILL.md +2 -0
- package/pipeline/skills/shared/external/ios-simulator/SKILL.md +265 -393
- package/pipeline/skills/shared/external/ios-simulator/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +177 -270
- package/pipeline/skills/shared/external/live-activities/SKILL.md +318 -360
- package/pipeline/skills/shared/external/live-activities/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +478 -710
- package/pipeline/skills/shared/external/localization-reuse-map/SKILL.md +91 -283
- package/pipeline/skills/shared/external/localization-reuse-map/reference/format-and-output.md +119 -151
- package/pipeline/skills/shared/external/localization-reuse-map/reference/publish-and-snapshot.md +60 -90
- package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +119 -156
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-artifact.py +726 -787
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/build-spreadsheet.py +253 -288
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-annotations.py +243 -304
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/fetch-legacy-labels.py +88 -104
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/publish-confluence.py +181 -235
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-key-shots.py +198 -263
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/render-overlay.py +461 -466
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-legacy-values.py +145 -151
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/resolve-new-values.py +123 -141
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/scan-screen-keys.py +146 -157
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/snapshot-resources.sh +22 -19
- package/pipeline/skills/shared/external/localization-reuse-map/scripts/verify-map.py +156 -140
- package/pipeline/skills/shared/external/mapkit-location/SKILL.md +295 -267
- package/pipeline/skills/shared/external/mapkit-location/evals/evals.json +28 -24
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +378 -532
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +397 -499
- package/pipeline/skills/shared/external/metrickit-diagnostics/SKILL.md +165 -348
- package/pipeline/skills/shared/external/metrickit-diagnostics/evals/evals.json +26 -23
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +123 -130
- package/pipeline/skills/shared/external/musickit-audio/SKILL.md +189 -315
- package/pipeline/skills/shared/external/musickit-audio/evals/evals.json +22 -21
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +181 -270
- package/pipeline/skills/shared/external/natural-language/SKILL.md +188 -340
- package/pipeline/skills/shared/external/natural-language/evals/evals.json +21 -21
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +171 -225
- package/pipeline/skills/shared/external/nextjs-app-router/SKILL.md +1 -0
- package/pipeline/skills/shared/external/passkit-wallet/SKILL.md +258 -392
- package/pipeline/skills/shared/external/passkit-wallet/evals/evals.json +30 -29
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +164 -231
- package/pipeline/skills/shared/external/pdfkit/SKILL.md +312 -344
- package/pipeline/skills/shared/external/pdfkit/evals/evals.json +19 -19
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +413 -624
- package/pipeline/skills/shared/external/pencilkit-drawing/SKILL.md +242 -358
- package/pipeline/skills/shared/external/pencilkit-drawing/evals/evals.json +25 -21
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +161 -226
- package/pipeline/skills/shared/external/permissionkit/SKILL.md +282 -400
- package/pipeline/skills/shared/external/permissionkit/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +237 -350
- package/pipeline/skills/shared/external/photos-camera-media/SKILL.md +276 -325
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +299 -545
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +344 -588
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +316 -660
- package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +270 -416
- package/pipeline/skills/shared/external/play-store-review/SKILL.md +2 -0
- package/pipeline/skills/shared/external/push-notifications/SKILL.md +312 -340
- package/pipeline/skills/shared/external/push-notifications/evals/evals.json +27 -26
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +328 -485
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +327 -560
- package/pipeline/skills/shared/external/python-patterns/SKILL.md +1 -0
- package/pipeline/skills/shared/external/react-best-practices/SKILL.md +1 -0
- package/pipeline/skills/shared/external/realitykit-ar/SKILL.md +218 -410
- package/pipeline/skills/shared/external/realitykit-ar/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +221 -348
- package/pipeline/skills/shared/external/rest-api-design/SKILL.md +1 -0
- package/pipeline/skills/shared/external/retrofit-networking/SKILL.md +2 -0
- package/pipeline/skills/shared/external/room-database/SKILL.md +2 -0
- package/pipeline/skills/shared/external/search-first/SKILL.md +1 -0
- package/pipeline/skills/shared/external/shareplay-activities/SKILL.md +222 -393
- package/pipeline/skills/shared/external/shareplay-activities/evals/evals.json +23 -24
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +280 -420
- package/pipeline/skills/shared/external/signal-community/SKILL.md +2 -0
- package/pipeline/skills/shared/external/skill-creator/SKILL.md +80 -41
- package/pipeline/skills/shared/external/skill-creator/audit.md +63 -59
- package/pipeline/skills/shared/external/skill-creator/checklist.md +28 -20
- package/pipeline/skills/shared/external/skill-creator/examples.md +40 -40
- package/pipeline/skills/shared/external/skill-creator/label-check.md +48 -36
- package/pipeline/skills/shared/external/skill-creator/scripts/audit-panel.js +91 -100
- package/pipeline/skills/shared/external/skill-creator/template.md +51 -39
- package/pipeline/skills/shared/external/speech-recognition/SKILL.md +217 -421
- package/pipeline/skills/shared/external/speech-recognition/evals/evals.json +23 -26
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +133 -125
- package/pipeline/skills/shared/external/storekit/SKILL.md +228 -204
- package/pipeline/skills/shared/external/storekit/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/storekit/references/app-review-guidelines.md +98 -109
- package/pipeline/skills/shared/external/storekit/references/core-patterns.md +298 -242
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +356 -649
- package/pipeline/skills/shared/external/swift-api-design-guidelines/SKILL.md +274 -399
- package/pipeline/skills/shared/external/swift-api-design-guidelines/evals/evals.json +22 -24
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +107 -108
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +93 -165
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +99 -137
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +77 -120
- package/pipeline/skills/shared/external/swift-architecture/SKILL.md +334 -350
- package/pipeline/skills/shared/external/swift-architecture/evals/evals.json +22 -22
- package/pipeline/skills/shared/external/swift-charts/SKILL.md +208 -394
- package/pipeline/skills/shared/external/swift-charts/evals/evals.json +27 -30
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +351 -762
- package/pipeline/skills/shared/external/swift-codable/SKILL.md +339 -343
- package/pipeline/skills/shared/external/swift-codable/evals/evals.json +20 -20
- package/pipeline/skills/shared/external/swift-concurrency/SKILL.md +303 -351
- package/pipeline/skills/shared/external/swift-concurrency/evals/evals.json +27 -24
- package/pipeline/skills/shared/external/swift-concurrency/references/approachable-concurrency.md +65 -80
- package/pipeline/skills/shared/external/swift-concurrency/references/async-algorithms.md +48 -84
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +134 -79
- package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +145 -167
- package/pipeline/skills/shared/external/swift-concurrency/references/diagnostics.md +62 -50
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +92 -121
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +177 -241
- package/pipeline/skills/shared/external/swift-formatstyle/SKILL.md +258 -234
- package/pipeline/skills/shared/external/swift-language/SKILL.md +342 -382
- package/pipeline/skills/shared/external/swift-language/evals/evals.json +24 -27
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +79 -56
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +297 -340
- package/pipeline/skills/shared/external/swift-security/SKILL.md +180 -161
- package/pipeline/skills/shared/external/swift-security/evals/evals.json +25 -25
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +314 -469
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +408 -476
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +260 -530
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +270 -477
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +573 -571
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +370 -441
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +332 -433
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +346 -468
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +352 -472
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +431 -432
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +328 -425
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +341 -579
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +396 -457
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +354 -614
- package/pipeline/skills/shared/external/swift-testing/SKILL.md +188 -175
- package/pipeline/skills/shared/external/swift-testing/evals/evals.json +26 -24
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +80 -84
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +317 -433
- package/pipeline/skills/shared/external/swiftdata/SKILL.md +392 -256
- package/pipeline/skills/shared/external/swiftdata/evals/evals.json +24 -24
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +206 -402
- package/pipeline/skills/shared/external/swiftdata/references/indexing.md +59 -52
- package/pipeline/skills/shared/external/swiftdata/references/predicate-pitfalls.md +57 -33
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +354 -747
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +300 -508
- package/pipeline/skills/shared/external/swiftlint/SKILL.md +175 -226
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +141 -208
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +100 -109
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +159 -179
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +383 -18
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +143 -229
- package/pipeline/skills/shared/external/swiftui-animation/SKILL.md +283 -366
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +396 -608
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +336 -385
- package/pipeline/skills/shared/external/swiftui-gestures/SKILL.md +239 -349
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +228 -310
- package/pipeline/skills/shared/external/swiftui-layout-components/SKILL.md +260 -249
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +92 -74
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +112 -177
- package/pipeline/skills/shared/external/swiftui-layout-components/references/list.md +61 -64
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +94 -134
- package/pipeline/skills/shared/external/swiftui-liquid-glass/SKILL.md +193 -225
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +173 -327
- package/pipeline/skills/shared/external/swiftui-navigation/SKILL.md +193 -168
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +127 -150
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +132 -133
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +152 -117
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +106 -140
- package/pipeline/skills/shared/external/swiftui-patterns/SKILL.md +316 -252
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +341 -332
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +547 -854
- package/pipeline/skills/shared/external/swiftui-patterns/references/design-polish.md +485 -537
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +417 -499
- package/pipeline/skills/shared/external/swiftui-performance/SKILL.md +213 -376
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +86 -175
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +89 -195
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +95 -182
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-improving-swiftui-performance.md +71 -149
- package/pipeline/skills/shared/external/swiftui-performance/references/wwdc-session-sources.md +21 -27
- package/pipeline/skills/shared/external/swiftui-uikit-interop/SKILL.md +303 -295
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +204 -387
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +469 -683
- package/pipeline/skills/shared/external/swiftui-webkit/SKILL.md +140 -186
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +75 -86
- package/pipeline/skills/shared/external/swiftui-webkit/references/local-content-and-custom-schemes.md +63 -60
- package/pipeline/skills/shared/external/swiftui-webkit/references/migration-and-fallbacks.md +69 -137
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +95 -67
- package/pipeline/skills/shared/external/tailwind-css/SKILL.md +1 -0
- package/pipeline/skills/shared/external/testing-backend/SKILL.md +1 -0
- package/pipeline/skills/shared/external/tipkit/SKILL.md +220 -335
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +356 -494
- package/pipeline/skills/shared/external/typescript-patterns/SKILL.md +1 -0
- package/pipeline/skills/shared/external/vision-framework/SKILL.md +260 -375
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +393 -515
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +363 -539
- package/pipeline/skills/shared/external/vue-composition/SKILL.md +1 -0
- package/pipeline/skills/shared/external/weatherkit/SKILL.md +152 -310
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +288 -407
- package/pipeline/skills/shared/external/web-accessibility/SKILL.md +1 -0
- package/pipeline/skills/shared/external/web-performance/SKILL.md +1 -0
- package/pipeline/skills/shared/external/web-testing/SKILL.md +1 -0
- package/pipeline/skills/shared/external/widgetkit/SKILL.md +216 -288
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +414 -719
- package/pipeline/skills/shared/external/NOTICE-swift-ios-skills.md +0 -39
|
@@ -1,298 +1,245 @@
|
|
|
1
|
-
# LLDB
|
|
1
|
+
# LLDB Command Reference
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Companion to the `debugging-instruments` skill. Commands are typed at the
|
|
4
|
+
`(lldb)` prompt in Xcode's console or in a standalone `lldb` session.
|
|
4
5
|
|
|
5
|
-
##
|
|
6
|
+
## Printing Values: `v`, `p`, `po`
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
- [Memory Inspection](#memory-inspection)
|
|
13
|
-
- [Custom Type Summaries](#custom-type-summaries)
|
|
14
|
-
- [Python Scripting](#python-scripting)
|
|
15
|
-
- [Useful Symbolic Breakpoints](#useful-symbolic-breakpoints)
|
|
16
|
-
- [LLDB Init File](#lldb-init-file)
|
|
8
|
+
| Command | How it works | Runs code in the target? | Speed |
|
|
9
|
+
|---------|--------------|--------------------------|-------|
|
|
10
|
+
| `v` | Reads the variable from the frame's memory | No | Fast |
|
|
11
|
+
| `p` | Evaluates the expression, formats the result with LLDB's data formatters | Yes | Medium |
|
|
12
|
+
| `po` | Evaluates the expression, then asks the object for its description | Yes | Slow |
|
|
17
13
|
|
|
18
|
-
|
|
14
|
+
`po` shows what `CustomDebugStringConvertible` (`debugDescription`) returns.
|
|
15
|
+
`p` shows the static type followed by the formatted value.
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
| Command | Mechanism | Side Effects | Speed |
|
|
23
|
-
|---------|-----------|--------------|-------|
|
|
24
|
-
| `po expr` | Calls `debugDescription` via expression eval | Yes - runs code | Slow |
|
|
25
|
-
| `p expr` | LLDB formatter on expression result | Yes - runs code | Medium |
|
|
26
|
-
| `v varname` | Reads frame memory directly | No | Fast |
|
|
27
|
-
|
|
28
|
-
```text
|
|
29
|
-
(lldb) po myArray # Calls CustomDebugStringConvertible
|
|
30
|
-
(lldb) p myArray # Shows type + formatted value
|
|
31
|
-
(lldb) v myArray # Fastest, no code execution
|
|
32
|
-
(lldb) v myArray[0] # Access elements directly
|
|
33
|
-
(lldb) v self.viewModel.state # Dot-path into properties
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Use `v` as the default. Fall back to `po` when you need `debugDescription`
|
|
37
|
-
or custom string output. Use `p` when you need type information.
|
|
38
|
-
|
|
39
|
-
### Register and Memory
|
|
17
|
+
`v` understands subscripts and member paths:
|
|
40
18
|
|
|
41
19
|
```text
|
|
42
|
-
(lldb)
|
|
43
|
-
(lldb)
|
|
44
|
-
(lldb) memory read 0x600003a04000 # Read raw memory
|
|
45
|
-
(lldb) memory read -s1 -fx -c32 addr # 32 bytes as hex
|
|
20
|
+
(lldb) v invoices[0]
|
|
21
|
+
(lldb) v self.store.selection
|
|
46
22
|
```
|
|
47
23
|
|
|
48
|
-
|
|
24
|
+
Default to `v`. Switch to `po` when you want the type's own description, and
|
|
25
|
+
to `p` when you want to see the type as well.
|
|
49
26
|
|
|
50
|
-
|
|
27
|
+
## Registers and Raw Memory
|
|
51
28
|
|
|
52
29
|
```text
|
|
53
|
-
(lldb)
|
|
54
|
-
(lldb)
|
|
55
|
-
(lldb)
|
|
30
|
+
(lldb) register read # every register
|
|
31
|
+
(lldb) register read x0 x1 # two ARM64 argument registers
|
|
32
|
+
(lldb) memory read 0x16fdfe2a0
|
|
33
|
+
(lldb) memory read --size 1 --format x --count 32 0x16fdfe2a0 # 32 hex bytes
|
|
56
34
|
```
|
|
57
35
|
|
|
58
|
-
|
|
36
|
+
## Breakpoint Recipes
|
|
59
37
|
|
|
60
38
|
```text
|
|
61
|
-
(lldb) br set -
|
|
62
|
-
(lldb) br set -
|
|
63
|
-
(lldb) br set -
|
|
64
|
-
(lldb) br set -r "
|
|
65
|
-
(lldb) br set -r "MyModule\..*\.deinit" # All deinits in a module
|
|
39
|
+
(lldb) br set -f InvoiceStore.swift -l 57 -c "invoice.total < 0"
|
|
40
|
+
(lldb) br set -f InvoiceStore.swift -l 57 --one-shot true # removed after the first hit
|
|
41
|
+
(lldb) br set -n "Billing.InvoiceStore.reload()" # fully qualified Swift name
|
|
42
|
+
(lldb) br set -r "Billing\..*\.deinit" # every deinit in a module
|
|
66
43
|
```
|
|
67
44
|
|
|
68
|
-
|
|
45
|
+
Attach actions to a breakpoint:
|
|
69
46
|
|
|
70
47
|
```text
|
|
71
|
-
(lldb) br set -n loadData
|
|
72
48
|
(lldb) br command add 1
|
|
73
|
-
> po "
|
|
49
|
+
> po "reload hit at \(Date())"
|
|
74
50
|
> bt
|
|
75
51
|
> continue
|
|
76
52
|
> DONE
|
|
77
53
|
```
|
|
78
54
|
|
|
79
|
-
### Logpoints
|
|
55
|
+
### Logpoints
|
|
56
|
+
|
|
57
|
+
Print on every hit without stopping:
|
|
80
58
|
|
|
81
59
|
```text
|
|
82
|
-
(lldb) br set -f
|
|
83
|
-
(lldb)
|
|
60
|
+
(lldb) br set -f InvoiceStore.swift -l 57
|
|
61
|
+
(lldb) breakpoint modify --auto-continue true 1
|
|
84
62
|
(lldb) br command add 1
|
|
85
|
-
> po
|
|
63
|
+
> po invoice.number
|
|
86
64
|
> DONE
|
|
87
65
|
```
|
|
88
66
|
|
|
89
|
-
This
|
|
90
|
-
|
|
67
|
+
This is the command-line form of Xcode's "Log Message" action with
|
|
68
|
+
"Automatically continue after evaluating actions" checked.
|
|
91
69
|
|
|
92
|
-
###
|
|
70
|
+
### Housekeeping
|
|
93
71
|
|
|
94
72
|
```text
|
|
95
|
-
(lldb) br list
|
|
96
|
-
(lldb) br
|
|
97
|
-
(lldb) br
|
|
98
|
-
(lldb) br delete 1
|
|
99
|
-
(lldb) br delete
|
|
100
|
-
(lldb) br modify 1 -i 5 # Skip first 5 hits (ignore count)
|
|
73
|
+
(lldb) br list
|
|
74
|
+
(lldb) br enable 1
|
|
75
|
+
(lldb) br modify --ignore-count 5 1 # skip the first five hits
|
|
76
|
+
(lldb) br delete 1
|
|
77
|
+
(lldb) br delete # no id: deletes every breakpoint (asks first)
|
|
101
78
|
```
|
|
102
79
|
|
|
103
|
-
##
|
|
80
|
+
## Expressions
|
|
104
81
|
|
|
105
|
-
|
|
82
|
+
Swift expressions can contain closures and several statements:
|
|
106
83
|
|
|
107
84
|
```text
|
|
108
|
-
(lldb)
|
|
109
|
-
(lldb)
|
|
110
|
-
(lldb)
|
|
111
|
-
(lldb)
|
|
112
|
-
(lldb) e -l swift -- self.title = "Debug Title"
|
|
85
|
+
(lldb) e invoices.filter { $0.isOverdue }.count
|
|
86
|
+
(lldb) e let summary = store.summary(); print(summary)
|
|
87
|
+
(lldb) expression -l swift -- import Foundation
|
|
88
|
+
(lldb) expression -l swift -- self.navigationItem.title = "Debug"
|
|
113
89
|
```
|
|
114
90
|
|
|
115
|
-
|
|
91
|
+
Objective-C context is handy for UIKit internals:
|
|
116
92
|
|
|
117
93
|
```text
|
|
118
|
-
(lldb)
|
|
119
|
-
(lldb)
|
|
120
|
-
(lldb)
|
|
121
|
-
(lldb) e -l objc -- (void)[0x7fc... recursiveDescription] # View hierarchy dump
|
|
94
|
+
(lldb) expression -l objc -- (void)[[UIApplication sharedApplication] _performMemoryWarning]
|
|
95
|
+
(lldb) expression -l objc -- (BOOL)[(id)0x10a3c4f00 isKindOfClass:[UIView class]]
|
|
96
|
+
(lldb) expression -l objc -- (void)[0x10a3c4f00 recursiveDescription]
|
|
122
97
|
```
|
|
123
98
|
|
|
124
|
-
|
|
99
|
+
The first line calls a private method to simulate a memory warning; use it only
|
|
100
|
+
while debugging. In Simulator, Debug > Simulate Memory Warning does the same.
|
|
101
|
+
`recursiveDescription` prints the view tree under the given view.
|
|
102
|
+
|
|
103
|
+
### Changing the UI while paused
|
|
125
104
|
|
|
126
105
|
```text
|
|
127
|
-
(lldb)
|
|
128
|
-
(lldb)
|
|
129
|
-
(lldb)
|
|
106
|
+
(lldb) expression -l swift -- self.statusLabel.text = "Paid"
|
|
107
|
+
(lldb) expression -l swift -- self.statusLabel.backgroundColor = UIColor.systemTeal
|
|
108
|
+
(lldb) expression -l objc -- (void)[CATransaction flush]
|
|
130
109
|
```
|
|
131
110
|
|
|
132
|
-
### Calling
|
|
111
|
+
### Calling functions
|
|
133
112
|
|
|
134
113
|
```text
|
|
135
|
-
(lldb)
|
|
136
|
-
(lldb)
|
|
137
|
-
(lldb)
|
|
114
|
+
(lldb) expression self.store.clearCache()
|
|
115
|
+
(lldb) expression UserDefaults.standard.set(true, forKey: "showOnboarding")
|
|
116
|
+
(lldb) expression NotificationCenter.default.post(name: .init("SessionExpired"), object: nil)
|
|
138
117
|
```
|
|
139
118
|
|
|
140
119
|
## Watchpoints
|
|
141
120
|
|
|
142
121
|
```text
|
|
143
|
-
(lldb) w set v self.
|
|
144
|
-
(lldb) w set
|
|
145
|
-
(lldb) w set v self.score -w read_write # Watch both
|
|
146
|
-
(lldb) w set e -- 0x600003a04000 # Watch memory address
|
|
147
|
-
(lldb) w modify 1 -c "self.score > 100" # Conditional
|
|
148
|
-
(lldb) w list # Show active watchpoints
|
|
149
|
-
(lldb) w delete 1 # Remove
|
|
122
|
+
(lldb) w set v self.balance -w read_write # reads and writes
|
|
123
|
+
(lldb) w set e -- 0x600003d04f10 # raw address
|
|
150
124
|
```
|
|
151
125
|
|
|
152
|
-
|
|
153
|
-
|
|
126
|
+
Apple Silicon offers four hardware watchpoints. Spend them carefully and delete
|
|
127
|
+
the ones you no longer need.
|
|
154
128
|
|
|
155
|
-
##
|
|
129
|
+
## Moving Through Threads and Frames
|
|
156
130
|
|
|
157
131
|
```text
|
|
158
|
-
(lldb)
|
|
159
|
-
(lldb)
|
|
160
|
-
(lldb)
|
|
161
|
-
(lldb)
|
|
162
|
-
(lldb)
|
|
163
|
-
(lldb)
|
|
164
|
-
(lldb)
|
|
165
|
-
(lldb) frame variable # All variables in frame
|
|
166
|
-
(lldb) up # Move up one frame
|
|
167
|
-
(lldb) down # Move down one frame
|
|
132
|
+
(lldb) bt 5 # top five frames only
|
|
133
|
+
(lldb) frame info # where am I
|
|
134
|
+
(lldb) frame variable # every variable in this frame
|
|
135
|
+
(lldb) up # one frame toward the caller
|
|
136
|
+
(lldb) down # one frame back toward the callee
|
|
137
|
+
(lldb) thread return # leave the current function now
|
|
138
|
+
(lldb) thread return false # leave a Bool-returning function with false
|
|
168
139
|
```
|
|
169
140
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
```text
|
|
173
|
-
(lldb) thread return # Return from current frame
|
|
174
|
-
(lldb) thread return false # Return false from a Bool func
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
Use `thread return` to skip the rest of a function during debugging.
|
|
178
|
-
Useful for bypassing a crash or testing a different code path.
|
|
141
|
+
`thread return` skips the rest of a function. Use it to step past a line that
|
|
142
|
+
would crash or to try the other branch of a decision without rebuilding.
|
|
179
143
|
|
|
180
144
|
## Memory Inspection
|
|
181
145
|
|
|
182
146
|
```text
|
|
183
|
-
(lldb) memory read
|
|
184
|
-
(lldb) memory read -
|
|
185
|
-
(lldb) memory
|
|
186
|
-
(lldb)
|
|
187
|
-
(lldb) image lookup -
|
|
188
|
-
(lldb) image
|
|
189
|
-
(lldb) image list # All loaded images/frameworks
|
|
147
|
+
(lldb) memory read --size 4 --format x --count 8 0x600003d04f10 # eight 4-byte hex words
|
|
148
|
+
(lldb) memory read -f s 0x600003d04f10 # a C string
|
|
149
|
+
(lldb) memory find 0x600003d04000 0x600003d05000 -e "DEADBEEF"
|
|
150
|
+
(lldb) image lookup -a 0x0000000104a1c3b8 # symbol at this address
|
|
151
|
+
(lldb) image lookup -n InvoiceStore.reload # address of this symbol
|
|
152
|
+
(lldb) image list # loaded images
|
|
190
153
|
```
|
|
191
154
|
|
|
192
|
-
|
|
155
|
+
Inspecting Swift values at runtime:
|
|
193
156
|
|
|
194
157
|
```text
|
|
195
|
-
(lldb) e
|
|
196
|
-
(lldb) e
|
|
197
|
-
(lldb) e
|
|
158
|
+
(lldb) e print(type(of: store.current))
|
|
159
|
+
(lldb) e dump(store.current)
|
|
160
|
+
(lldb) e Mirror(reflecting: store.current).children.map { $0.label }
|
|
198
161
|
```
|
|
199
162
|
|
|
200
|
-
##
|
|
163
|
+
## Type Summaries
|
|
201
164
|
|
|
202
|
-
|
|
165
|
+
Short summaries make `v` and `p` output easier to read. Put them in
|
|
166
|
+
`~/.lldbinit`:
|
|
203
167
|
|
|
204
168
|
```text
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
type summary add CLLocationCoordinate2D \
|
|
209
|
-
--summary-string "lat=${var.latitude}, lon=${var.longitude}"
|
|
210
|
-
|
|
211
|
-
# Show Date as readable string
|
|
212
|
-
type summary add Foundation.Date \
|
|
213
|
-
--summary-string "${var.timeIntervalSinceReferenceDate} secs since 2001"
|
|
214
|
-
|
|
215
|
-
# Custom summary for your own types
|
|
216
|
-
type summary add MyApp.UserProfile \
|
|
217
|
-
--summary-string "User(${var.name}, id=${var.id})"
|
|
169
|
+
type summary add -s "(${var.latitude}, ${var.longitude})" CLLocationCoordinate2D
|
|
170
|
+
type summary add -s "ref+${var._time}" Foundation.Date
|
|
171
|
+
type summary add -s "#${var.number} ${var.total}" Billing.Invoice
|
|
218
172
|
```
|
|
219
173
|
|
|
174
|
+
The `Date` line prints the raw seconds since the reference date
|
|
175
|
+
(`timeIntervalSinceReferenceDate`); the stored field name can change between
|
|
176
|
+
toolchains, so check it with `v -R` first.
|
|
177
|
+
|
|
220
178
|
## Python Scripting
|
|
221
179
|
|
|
222
|
-
|
|
180
|
+
One-liners:
|
|
223
181
|
|
|
224
182
|
```text
|
|
225
183
|
(lldb) script import os
|
|
226
184
|
(lldb) script print(os.getpid())
|
|
227
|
-
(lldb) script lldb.debugger.GetSelectedTarget().GetProcess().GetNumThreads()
|
|
185
|
+
(lldb) script print(lldb.debugger.GetSelectedTarget().GetProcess().GetNumThreads())
|
|
228
186
|
```
|
|
229
187
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
Create `~/lldb_commands/dump_views.py`:
|
|
188
|
+
A custom command in `~/lldb_commands/window_tree.py`:
|
|
233
189
|
|
|
234
190
|
```python
|
|
235
191
|
import lldb
|
|
236
192
|
|
|
237
|
-
def
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
193
|
+
def window_tree(debugger, command, result, internal_dict):
|
|
194
|
+
frame = (debugger.GetSelectedTarget()
|
|
195
|
+
.GetProcess()
|
|
196
|
+
.GetSelectedThread()
|
|
197
|
+
.GetSelectedFrame())
|
|
198
|
+
options = lldb.SBExpressionOptions()
|
|
199
|
+
options.SetLanguage(lldb.eLanguageTypeObjC)
|
|
200
|
+
value = frame.EvaluateExpression(
|
|
201
|
+
"[[[UIApplication sharedApplication] keyWindow] recursiveDescription]",
|
|
202
|
+
options)
|
|
203
|
+
result.AppendMessage(value.GetObjectDescription() or "no key window")
|
|
247
204
|
|
|
248
205
|
def __lldb_init_module(debugger, internal_dict):
|
|
249
206
|
debugger.HandleCommand(
|
|
250
|
-
|
|
251
|
-
)
|
|
207
|
+
"command script add -f window_tree.window_tree window_tree")
|
|
252
208
|
```
|
|
253
209
|
|
|
254
|
-
Load
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
command script import ~/lldb_commands/dump_views.py
|
|
258
|
-
```
|
|
210
|
+
Load it from `~/.lldbinit` with
|
|
211
|
+
`command script import ~/lldb_commands/window_tree.py`, then type
|
|
212
|
+
`window_tree`.
|
|
259
213
|
|
|
260
|
-
|
|
214
|
+
## Symbolic Breakpoints Worth Keeping
|
|
261
215
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
## Useful Symbolic Breakpoints
|
|
267
|
-
|
|
268
|
-
Set these in Xcode's Breakpoint Navigator for common debugging scenarios:
|
|
269
|
-
|
|
270
|
-
| Symbol | Purpose |
|
|
271
|
-
|--------|---------|
|
|
216
|
+
| Symbol | Stops on |
|
|
217
|
+
|--------|----------|
|
|
272
218
|
| `UIViewAlertForUnsatisfiableConstraints` | Auto Layout constraint conflicts |
|
|
273
|
-
| `swift_willThrow` |
|
|
274
|
-
| `malloc_error_break` | Heap corruption
|
|
275
|
-
| `_UITraitCollectionChangeObserverNotify` |
|
|
276
|
-
| `objc_exception_throw` |
|
|
277
|
-
| `-[UIApplication _performMemoryWarning]` |
|
|
278
|
-
| `NSInternalInconsistencyException` | Foundation assertion failures |
|
|
219
|
+
| `swift_willThrow` | Every Swift `throw` |
|
|
220
|
+
| `malloc_error_break` | Heap corruption detected by malloc |
|
|
221
|
+
| `_UITraitCollectionChangeObserverNotify` | Trait collection changes |
|
|
222
|
+
| `objc_exception_throw` | Every Objective-C exception |
|
|
223
|
+
| `-[UIApplication _performMemoryWarning]` | Simulated memory warnings |
|
|
279
224
|
|
|
280
|
-
|
|
225
|
+
`NSInternalInconsistencyException` is an exception name, not a symbol, so a
|
|
226
|
+
symbolic breakpoint on it never fires. Catch Foundation assertion failures with
|
|
227
|
+
an exception breakpoint (`br set -E objc`, or Xcode's Exception Breakpoint) or
|
|
228
|
+
with `objc_exception_throw`, then read the reason with `po $arg1`.
|
|
281
229
|
|
|
282
|
-
|
|
230
|
+
## `.lldbinit`
|
|
283
231
|
|
|
284
232
|
```text
|
|
285
|
-
|
|
286
|
-
command alias
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
# Type summaries
|
|
290
|
-
type summary add --summary-string "${var.rawValue}" -x "^.*RawRepresentable$"
|
|
291
|
-
|
|
292
|
-
# Load custom scripts
|
|
293
|
-
command script import ~/lldb_commands/dump_views.py
|
|
294
|
-
|
|
295
|
-
# Settings
|
|
233
|
+
command alias -- swiftfound e -l swift -- import Foundation
|
|
234
|
+
command alias pjson expression -l swift -- print(String(decoding: try! JSONSerialization.data(withJSONObject: %1, options: [.prettyPrinted, .sortedKeys]), as: UTF8.self))
|
|
235
|
+
type summary add -x "^.*RawRepresentable$" -s "${var.rawValue}"
|
|
296
236
|
settings set target.language swift
|
|
297
|
-
settings set frame-format "
|
|
237
|
+
settings set frame-format "#${frame.index} ${function.name}{ @ ${line.file.basename}:${line.number}}\n"
|
|
298
238
|
```
|
|
239
|
+
|
|
240
|
+
- `command alias` gives a long command a short name.
|
|
241
|
+
- `pjson` pretty-prints any JSON-compatible object passed as its argument
|
|
242
|
+
through `JSONSerialization` with `.prettyPrinted`; `%1` is the argument.
|
|
243
|
+
- The `-x` flag makes the summary apply to every type whose name matches the
|
|
244
|
+
regex.
|
|
245
|
+
- `frame-format` controls how each frame line looks in `bt` and when stepping.
|