<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Debug on Peter.H's Full-Stack GAME</title><link>https://peter-notes.com/tags/debug/</link><description>Recent content in Debug on Peter.H's Full-Stack GAME</description><image><title>Peter.H's Full-Stack GAME</title><url>https://peter-notes.com/images/og-image.jpg</url><link>https://peter-notes.com/images/og-image.jpg</link></image><generator>Hugo</generator><language>zh-tw</language><lastBuildDate>Fri, 15 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://peter-notes.com/tags/debug/index.xml" rel="self" type="application/rss+xml"/><item><title>LLM 驅動的 E2E 驗證：為什麼 bot 比人更容易揭發 backend regression</title><link>https://peter-notes.com/posts/llm-driven-e2e-surfaces-backend-regression/</link><pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/llm-driven-e2e-surfaces-backend-regression/</guid><description>用 Playwright MCP 讓 LLM 驅動瀏覽器跑 STG 驗收，原本目標是確認 frontend 修補有效，卻意外揭發 backend dual-write lifecycle hook 失效的 regression。POST 200 不等於資料寫對：探討為什麼 bot 會多走那一步、人手 UAT 為什麼通常碰不到、以及如何把這個習慣寫進 verification recipe。</description></item><item><title>ORM 在騙你：當 populate / include 悄悄失效</title><link>https://peter-notes.com/posts/orm-silent-populate-failure/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/orm-silent-populate-failure/</guid><description>一個 CMS 文件的「上傳者」欄位永遠空白引出的除錯故事：當 ORM 的 populate / include 在特定條件組合下靜默失敗，HTTP 200 OK、其他欄位都對，唯獨關聯變成 null。介紹這類跨 ORM 的通病怎麼診斷、怎麼繞過、怎麼從架構分層理解為什麼只有這一層會騙人。</description></item><item><title>Strapi v5's Silent populate Failure with Relation Filters</title><link>https://peter-notes.com/posts/strapi-v5-populate-silent-failure-with-relation-filters/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-v5-populate-silent-failure-with-relation-filters/</guid><description>A reproducible Strapi v5 bug: combining filters[relation][id][$eq] with populate[relation]=true silently returns null for the populated field — no error, no warning, just missing data. This post walks through the symptom, a curl reproduction, why it happens at the ORM layer, and a knex-based custom find controller that fixes it.</description></item><item><title>Strapi 忘記密碼的安靜回應：Anti-Enumeration、Phishing-as-a-Service 與撞庫經濟學</title><link>https://peter-notes.com/posts/strapi-forgot-password-anti-enumeration/</link><pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-forgot-password-anti-enumeration/</guid><description>從一次 kubectl 排查出發，解析為何 Strapi 忘記密碼 API 對不存在的 email 仍回 200，並深入釣魚工具（Gophish、Evilginx2）與撞庫工具（OpenBullet）的運作與經濟模型，說明 App 文案為何必須配合後端的 anti-enumeration 設計。</description></item><item><title>頭貼切不回去？一個 Bug 揪出 Admin Panel 權限漂移的跨後端通病</title><link>https://peter-notes.com/posts/admin-panel-permission-drift-cms-backends/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/admin-panel-permission-drift-cms-backends/</guid><description>從一個 Flutter 切不回手機頭貼的 bug 出發，揭開 Strapi Admin Panel 權限漂移這個跨後端的共通陷阱。深入分析雙層根因、衍生的 null validation bug，以及為什麼 Firebase、Supabase、Hasura、AWS IAM 都逃不過這個問題。</description></item><item><title>Flutter 子母帳號切換踩了四個坑：GetX 狀態管理的隱藏地雷</title><link>https://peter-notes.com/posts/flutter-getx-account-switch-state-trap/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-getx-account-switch-state-trap/</guid><description>實作 Flutter 子母帳號切換功能時，連環踩了四個 GetX 狀態管理的坑：身份憑證不同步、ViewModel 生命週期錯亂、全域變數過期參考、記憶體狀態未持久化。逐一分析根因與修復思路。</description></item><item><title>Docker BuildKit Cache Mount 的隱形陷阱</title><link>https://peter-notes.com/posts/docker-buildkit-cache-mount-stale-build/</link><pubDate>Wed, 18 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/docker-buildkit-cache-mount-stale-build/</guid><description>深入分析 Docker BuildKit 的 --mount=type=cache 如何在 CI/CD 中導致部署了舊版程式碼，以及為什麼 --no-cache 旗標無法解決這個問題。從四次失敗部署中拆解 Docker 快取的三層機制。</description></item><item><title>Flutter iOS 冷啟動閃退：Debug 模式的隱藏陷阱</title><link>https://peter-notes.com/posts/flutter-ios-cold-start-crash-debug-mode/</link><pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-ios-cold-start-crash-debug-mode/</guid><description>深入分析 Flutter iOS App 從主畫面啟動時閃退的根本原因：iOS 14+ 的 ptrace 安全限制導致 Debug 模式無法獨立運行，以及如何正確診斷和解決這個問題。</description></item><item><title>功能部署後憑空消失？一場 Jenkins Workspace 的除錯之旅</title><link>https://peter-notes.com/posts/jenkins-workspace-stale-code-debugging/</link><pubDate>Thu, 12 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/jenkins-workspace-stale-code-debugging/</guid><description>深入分析 Jenkins Pipeline 中因缺少 checkout scm 導致 workspace 未同步到 git tag commit，造成新功能部署後消失的問題。從 Kubernetes Pod 內檢查實際檔案、比對 Git tag 內容，到發現 Jenkins workspace 持久化機制的隱形陷阱，完整記錄除錯過程、根因分析與三項防範措施</description></item><item><title>升級 Strapi v5.31+ 後 JWT 過期就被登出？問題藏在你沒注意到的內建路由裡</title><link>https://peter-notes.com/posts/strapi-v5-auth-refresh-route-pitfall/</link><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-v5-auth-refresh-route-pitfall/</guid><description>深入剖析 Strapi v5.31+ 將 /auth/refresh 改為內建路由後，導致 JWT 過期呼叫 refresh 回傳 403 的根因與修復方式。一個版本升級隱含的行為變更，如何讓除錯方向完全走偏。</description></item><item><title>Strapi Plugin 覆寫陷阱：為什麼你的 Override 沒有生效？</title><link>https://peter-notes.com/posts/strapi-plugin-factory-wrapper/</link><pubDate>Thu, 15 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/strapi-plugin-factory-wrapper/</guid><description>深入解析 Strapi v5 plugin 架構中的 factory function 陷阱，以及如何使用 Factory Wrapper 模式正確覆寫 users-permissions plugin 的 service 和 controller</description></item><item><title>同樣的功能，為什麼 Flutter 比 Vue 難 Debug 十倍？從實戰到架構的六層反思</title><link>https://peter-notes.com/posts/flutter-vs-vue-debugging-complexity/</link><pubDate>Sun, 04 Jan 2026 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-vs-vue-debugging-complexity/</guid><description>同樣是「關於我們」頁面的顯示邏輯，Vue 改了十幾個 commit 都很順利，Flutter 卻卡了很久。本文從 Debug 實戰出發，延伸到 Domain Model 的防禦能力、Clean Architecture 的責任邊界、扁平架構的取捨、BFF 的可靠性價值，最後探討交接代碼的信任陷阱。</description></item><item><title>Flutter App 首頁 Banner 消失之謎：一場無效 API Token 的偵探之旅</title><link>https://peter-notes.com/posts/flutter-banner-401-invalid-token-debugging/</link><pubDate>Tue, 30 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/flutter-banner-401-invalid-token-debugging/</guid><description>深入剖析 Flutter App 首頁 Banner 無法顯示的問題，從 git commit 追蹤到 GraphQL 認證機制，揭開「帶無效憑證比不帶憑證更糟糕」的技術真相</description></item><item><title>15 次 Build Failed：一場 Jenkins + Flutter CI/CD 的史詩級除錯之旅</title><link>https://peter-notes.com/posts/2025-12-21-jenkins-flutter-cicd-debugging-journey/</link><pubDate>Sun, 21 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/2025-12-21-jenkins-flutter-cicd-debugging-journey/</guid><description>從 bundle exec 版本不一致、Bundler 權限錯誤、Discord Webhook 實作、CocoaPods 路徑問題、Build Number SSOT 架構、Ruby 版本相容性，到最終的 git describe 隨機行為——完整記錄 15 個 commits 的除錯歷程。</description></item><item><title>Claude Code Token 不夠用？從 $20 升到 $100 還是燒光：我學到的教訓</title><link>https://peter-notes.com/posts/2025-12-20-claude-code-token-optimization-skills/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/2025-12-20-claude-code-token-optimization-skills/</guid><description>從 Claude Code Pro Plan 升級到 Max Plan 還是 token 不夠用？本文分享如何透過使用正確的 Skill 來大幅降低 token 消耗，讓 AI 輔助開發更有效率。</description></item><item><title>一次錯誤部署引發的 PostgreSQL Sequence 災難：為什麼使用者突然無法解鎖動畫？</title><link>https://peter-notes.com/posts/postgresql-sequence-disaster/</link><pubDate>Sun, 09 Nov 2025 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/postgresql-sequence-disaster/</guid><description>記錄一次生產環境中因錯誤部署導致的 PostgreSQL Sequence 不同步問題，包含完整的問題分析、修復過程和預防措施</description></item><item><title>解決 API 回應中的 BOM (Byte-Order Mark) 字元問題</title><link>https://peter-notes.com/posts/api-related-notes/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://peter-notes.com/posts/api-related-notes/</guid><description>深入探討 API 回應中不可見的 BOM 字元如何導致 JSON 解析失敗，以及如何診斷和解決這個隱藏的問題。完整的 Swift 解決方案與預防措施。</description></item></channel></rss>