iOS App ่ฐ่ฏๆข้ SDK๏ผ็จไบๅฎๆถๆ่ทๅๅๆ App ็็ฝ็ป่ฏทๆฑใๆฅๅฟใๆฐๆฎๅบ็ญ่ฐ่ฏไฟกๆฏใ
Important
ๆฌ้กน็ฎๅ จ้จไปฃ็ ๅๆๆกฃๅ็ฑ AI Agent ็ๆ
ๅฝๅ็ๆฌ: 1.5.0 | ๆดๆฐๆฅๅฟ | ๆๅๆดๆฐ: 2025-12-17
- HTTP/HTTPS ่ฏทๆฑๆ่ท - ่ชๅจๆฆๆชๆๆ็ฝ็ป่ฏทๆฑ๏ผๅ ๆฌ URLSessionใAlamofire ็ญ
- WebSocket ็ๆง - ๆ่ท WebSocket ่ฟๆฅๅๆถๆฏ
- ่ฏทๆฑ/ๅๅบ่ฏฆๆ - ๅฎๆด็ HeadersใBodyใTiming ไฟกๆฏ
- gRPC & Protobuf ๆฏๆ - ่ชๅจ่งฃๆ Protobuf ๆ ผๅผๆฐๆฎ
- ่ฏทๆฑ Mock - ๆฆๆช่ฏทๆฑๅนถ่ฟๅ่ชๅฎไนๅๅบ
- ๅปถ่ฟๆณจๅ ฅ - ๆจกๆ็ฝ็ปๅปถ่ฟ
- ๆกไปถๅน้ - ๆฏๆ URLใMethodใHeader ็ญๅค็งๅน้ ่งๅ
- ่ฏทๆฑๆญ็น - ๆๅ่ฏทๆฑๅนถๅ ่ฎธไฟฎๆน
- ๅๅบๆญ็น - ๆฆๆชๅๅบๅนถๅ ่ฎธไฟฎๆนๅ่ฟๅ
- ๅฎๆถ็ผ่พ - ๅจ Web UI ไธญ็ดๆฅ็ผ่พ่ฏทๆฑ/ๅๅบๅ ๅฎน
- ๅปถ่ฟๆณจๅ ฅ - ๆจกๆ็ฝ็ปๅปถ่ฟ
- ่ถ ๆถๆจกๆ - ๆจกๆ่ฏทๆฑ่ถ ๆถ
- ้่ฏฏ็ ๆณจๅ ฅ - ่ฟๅๆๅฎ็ HTTP ้่ฏฏ็
- ่ฟๆฅ้็ฝฎ - ๆจกๆ็ฝ็ปไธญๆญ
- ๆฐๆฎๆๅ - ๆจกๆๅๅบๆฐๆฎๆๅ
- CocoaLumberjack ้ๆ - ่ชๅจๆ่ท DDLog ๆฅๅฟ
- OSLog ๆฏๆ - ๆ่ท็ณป็ปๆฅๅฟ
- ่ชๅฎไนๆฅๅฟ - ๆฏๆ่ชๅฎไนๆฅๅฟ็บงๅซๅๅ็ฑป
- SQLite ๆต่ง - ๆฅ็ App ๅ ็ SQLite ๆฐๆฎๅบ
- ่กจๆฐๆฎๆฅ่ฏข - ๆฏๆๅ้กตใๆๅบใSQL ๆฅ่ฏข
- Schema ๆฅ็ - ๆฅ็่กจ็ปๆ
- CPU ไฝฟ็จ็ - ๅฎๆถ็ๆง App CPU ๅ ็จ
- ๅ ๅญไฝฟ็จ - ็ๆงๅ ๅญๅ ็จๅๅ ๅญๅๅ
- ๅธง็ (FPS) - ๅฎๆถๅธง็็ๆงๅๅก้กฟๆฃๆต
- App ๅฏๅจๆถ้ด - ๅทๅฏๅจ/็ญๅฏๅจ่ๆถๅๆ
- ้กต้ข่ๆถ - ่ชๅจ/ๆๅจ้้้กต้ขๅ ่ฝฝ่ๆถ
![]() |
![]() |
![]() |
![]() |
ๅจ Package.swift ไธญๆทปๅ ไพ่ต๏ผ
dependencies: [
.package(url: "https://github.com/example/DebugProbe.git", branch: "main")
]ๆๅจ Xcode ไธญ๏ผ
- File โ Add Package Dependencies
- ่พๅ ฅไปๅบ URL
- ้ๆฉ็ๆฌๅนถๆทปๅ ๅฐ็ฎๆ
import DebugProbe
// ๅจ AppDelegate ๆ App ๅ
ฅๅฃๅคๅๅงๅ
func application(_ application: UIApplication, didFinishLaunchingWithOptions...) -> Bool {
#if DEBUG
// ่ชๅจไป DebugProbeSettings ่ฏปๅ้
็ฝฎ๏ผhubHost, hubPort, token๏ผ
DebugProbe.shared.start()
#endif
return true
}DebugProbeSettings ๆฏ SDK ็้
็ฝฎ็ฎก็ไธญๅฟ๏ผๆฏๆๅคๅฑ้
็ฝฎไผๅ
็บง๏ผ่ฟ่กๆถ้
็ฝฎ > Info.plist > ้ป่ฎคๅผ
// ๆนๅผไธ๏ผๅจไปฃ็ ไธญ่ฎพ็ฝฎ้ป่ฎคๅผ๏ผ้ๅๆๅ
ๆถ้
็ฝฎ๏ผ
DebugProbeSettings.defaultHost = "192.168.1.100" // ้ป่ฎค "127.0.0.1"
DebugProbeSettings.defaultPort = 8081 // ้ป่ฎค 8081
// ๆนๅผไบ๏ผ่ฟ่กๆถ้
็ฝฎ๏ผไผๆไน
ๅๅฐ UserDefaults๏ผ
DebugProbeSettings.shared.configure(
host: "192.168.1.100",
port: 8081,
token: "my-token"
)
// ๆนๅผไธ๏ผ้่ฟ Info.plist ้
็ฝฎ
// DEBUGHUB_HOST = "192.168.1.100"
// DEBUGHUB_PORT = 8081
// DEBUGHUB_TOKEN = "my-token"// ็ๅฌ้
็ฝฎๅๆด้็ฅ
NotificationCenter.default.addObserver(
forName: DebugProbeSettings.configurationDidChangeNotification,
object: nil,
queue: .main
) { _ in
// ่ชๅจไป DebugProbeSettings ่ฏปๅๆฐ้
็ฝฎๅนถ้่ฟ
DebugProbe.shared.reconnect()
}#if DEBUG
// ๅฏไปฅ้ขๅ
้
็ฝฎๅๆฐ
let settings = DebugProbeSettings.shared
settings.hubHost = "192.168.1.100" // ่ชๅฎไน Hub ๅฐๅ
settings.networkCaptureMode = .automatic
settings.networkCaptureScope = .all
settings.enablePersistence = true
// ็ถๅๅฏๅจ
DebugProbe.shared.start()
#endifimport DebugProbe
// ๆณจๅ่ฆๆฃๆฅ็ๆฐๆฎๅบ
DatabaseRegistry.shared.register(
id: "main-db",
name: "MyDatabase",
url: databaseURL,
kind: "main",
isSensitive: false
)
// ๆ่ชๅจๅ็ฐ็ฎๅฝไธ็ๆๆ SQLite ๆฐๆฎๅบ
DatabaseRegistry.shared.autoDiscover(in: documentsURL)// ๅ้่ชๅฎไน่ฐ่ฏๆฅๅฟ
DebugProbe.shared.log(
level: .info,
message: "็จๆท็ปๅฝๆๅ",
subsystem: "Auth",
category: "Login"
)
// ไพฟๆทๆนๆณ
DebugProbe.shared.debug("่ฐ่ฏไฟกๆฏ")
DebugProbe.shared.info("ๆฎ้ไฟกๆฏ")
DebugProbe.shared.warning("่ญฆๅไฟกๆฏ")
DebugProbe.shared.error("้่ฏฏไฟกๆฏ")DebugProbe SDK ไธๅ ๅซ CocoaLumberjack ไพ่ตใๅฆๆๆจ็้กน็ฎไฝฟ็จ CocoaLumberjack๏ผ้่ฆๆๅจๅๅปบๆกฅๆฅๅจ๏ผ
#if canImport(CocoaLumberjack)
import Foundation
import CocoaLumberjack
import DebugProbe
/// CocoaLumberjack ๆฅๅฟๆกฅๆฅๅจ
public final class DDLogBridgeLocal: DDAbstractLogger {
private var _logFormatter: DDLogFormatter?
override public var logFormatter: DDLogFormatter? {
get { _logFormatter }
set { _logFormatter = newValue }
}
override public func log(message logMessage: DDLogMessage) {
DebugProbe.shared.log(
level: mapDDLogFlagToLevel(logMessage.flag),
message: logMessage.message,
subsystem: logMessage.fileName,
category: logMessage.function ?? "DDLog"
)
}
private func mapDDLogFlagToLevel(_ flag: DDLogFlag) -> LogEvent.Level {
switch flag {
case .verbose: return .verbose
case .debug: return .debug
case .info: return .info
case .warning: return .warning
case .error: return .error
default: return .debug
}
}
}
#endif็ถๅๅจ AppDelegate ไธญๆณจๅ๏ผ
#if canImport(CocoaLumberjack)
DDLog.add(DDLogBridgeLocal())
DDLog.add(DDOSLogger.sharedInstance) // ๅฏ้๏ผไฟ็ๆงๅถๅฐ่พๅบ
#endif| ๆนๆณ | ่ฏดๆ |
|---|---|
start() |
ไฝฟ็จ DebugProbeSettings ้ ็ฝฎๅฏๅจ๏ผๆจ่๏ผ |
stop() |
ๅๆญข DebugProbe |
reconnect() |
ไฝฟ็จ DebugProbeSettings ้ ็ฝฎ้่ฟ๏ผๆจ่๏ผ |
reconnect(hubURL:token:) |
ไฝฟ็จๆๅฎ URL ๅ Token ้่ฟ |
retryConnection() |
ๆๅจ้่ฏ่ฟๆฅ๏ผ็จไบ่ฟๆฅๅคฑ่ดฅๅ๏ผ |
isStarted |
ๆฏๅฆๅทฒๅฏๅจ |
connectionState |
ๅฝๅ่ฟๆฅ็ถๆ |
| ๅฑๆง/ๆนๆณ | ่ฏดๆ |
|---|---|
hubHost |
Hub ไธปๆบๅฐๅ |
hubPort |
Hub ็ซฏๅฃ |
token |
่ฎค่ฏ Token |
hubURL |
ๅฎๆด็ WebSocket URL |
isEnabled |
ๆฏๅฆๅฏ็จ DebugProbe |
verboseLogging |
ๆฏๅฆๅฏ็จ่ฏฆ็ปๆฅๅฟ |
configure(host:port:token:) |
ๅฟซ้้ ็ฝฎ |
configure(from: URL) |
ไป URL ่งฃๆ้ ็ฝฎ๏ผๅฆๆซ็ ๏ผ |
resetToDefaults() |
้็ฝฎไธบ้ป่ฎคๅผ |
connectionStatusDetail |
่ฟๆฅ็ถๆ่ฏฆๆ |
configurationDidChangeNotification |
้ ็ฝฎๅๆด้็ฅ |
DebugProbe ้็จๆไปถๅๆถๆ๏ผๆๆๅ่ฝๆจกๅ๏ผ็ฝ็ปใๆฅๅฟใMock ็ญ๏ผๅไปฅๆไปถๅฝขๅผๅฎ็ฐ๏ผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DebugProbe SDK โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โ
โ โ HttpPlugin โ โ LogPlugin โ โWebSocketPluginโ โ
โ โ (HTTP ๆ่ท) โ โ (ๆฅๅฟๆ่ท) โ โ (WS ็ๆง) โ โ
โ โโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โ
โ โ MockPlugin โ โBreakpointPluginโ โ ChaosPlugin โ โ
โ โ (Mock ่งๅ) โ โ (ๆญ็น่ฐ่ฏ) โ โ (ๆ
้ๆณจๅ
ฅ) โ โ
โ โโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโโ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ PluginManager + EventCallbacks โ โ
โ โ โข ๆไปถ็ๅฝๅจๆ็ฎก็๏ผๆณจๅ/ๅฏๅจ/ๅๆญข๏ผ โ โ
โ โ โข ไบไปถ่ทฏ็ฑ๏ผๆ่ทๅฑ โ ๆไปถๅฑ โ BridgeClient๏ผ โ โ
โ โ โข ๅฝไปคๅๅ๏ผๆๅก็ซฏๅฝไปค โ ็ฎๆ ๆไปถ๏ผ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ DebugBridgeClient โ โ
โ โ โข ๅ
็ฝฎไบไปถ็ผๅฒๅบ (ไธขๅผ็ญ็ฅใๆไน
ๅ) โ โ
โ โ โข WebSocket ้ไฟก โ โ
โ โ โข ๆน้ๅ้ใๆญ็บฟ้่ฟ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ WebSocket
โผ
โโโโโโโโโโโโโโโ
โ Debug Hub โ
โ (ๆๅก็ซฏ) โ
โโโโโโโโโโโโโโโ
| ๆไปถ ID | ๆไปถๅ็งฐ | ๅ่ฝ |
|---|---|---|
http |
HttpPlugin | HTTP/HTTPS ่ฏทๆฑๆ่ท |
log |
LogPlugin | ๆฅๅฟๆ่ท๏ผDDLog, OSLog๏ผ |
websocket |
WebSocketPlugin | WebSocket ่ฟๆฅ็ๆง |
mock |
MockPlugin | HTTP/WS Mock ่งๅ็ฎก็ |
database |
DatabasePlugin | SQLite ๆฐๆฎๅบๆฃๆฅ |
breakpoint |
BreakpointPlugin | ่ฏทๆฑ/ๅๅบๆญ็น่ฐ่ฏ |
chaos |
ChaosPlugin | ๆ ้ๆณจๅ ฅ๏ผChaos Engineering๏ผ |
performance |
PerformancePlugin | ๆง่ฝ็ๆง๏ผCPU/ๅ ๅญ/FPS/้กต้ข่ๆถ๏ผ |
DebugProbe/
โโโ Sources/
โ โโโ Core/
โ โ โโโ DebugProbe.swift # ไธปๅ
ฅๅฃ
โ โ โโโ DebugBridgeClient.swift # WebSocket ้ไฟก + ไบไปถ็ผๅฒ
โ โ โโโ EventPersistenceQueue.swift # ไบไปถๆไน
ๅ
โ โ โโโ Plugin/
โ โ โโโ PluginManager.swift # ๆไปถ็ฎก็ๅจ
โ โ โโโ EventCallbacks.swift # ไบไปถๅ่ฐไธญๅฟ
โ โ โโโ PluginBridgeAdapter.swift # ๅฝไปค่ทฏ็ฑ้้
ๅจ
โ โโโ Plugins/
โ โ โโโ Engines/
โ โ โ โโโ BreakpointEngine.swift # ๆญ็นๅผๆ
โ โ โ โโโ ChaosEngine.swift # ๆ
้ๆณจๅ
ฅๅผๆ
โ โ โ โโโ MockRuleEngine.swift # Mock ่งๅๅผๆ
โ โ โโโ HttpPlugin.swift # HTTP ็ฝ็ปๆไปถ
โ โ โโโ LogPlugin.swift # ๆฅๅฟๆไปถ
โ โ โโโ WebSocketPlugin.swift # WebSocket ๆไปถ
โ โ โโโ MockPlugin.swift # Mock ๆไปถ
โ โ โโโ DatabasePlugin.swift # ๆฐๆฎๅบๆไปถ
โ โ โโโ BreakpointPlugin.swift # ๆญ็นๆไปถ
โ โ โโโ ChaosPlugin.swift # Chaos ๆไปถ
โ โ โโโ PerformancePlugin.swift # ๆง่ฝ็ๆงๆไปถ
โ โโโ Network/
โ โ โโโ NetworkInstrumentation.swift # HTTP ๆฆๆชๅบ็ก่ฎพๆฝ
โ โ โโโ WebSocketInstrumentation.swift # WebSocket ๆฆๆชๅบ็ก่ฎพๆฝ
โ โโโ Log/
โ โ โโโ DDLogBridge.swift # CocoaLumberjack ๆกฅๆฅ
โ โโโ Database/
โ โ โโโ DatabaseRegistry.swift # ๆฐๆฎๅบๆณจๅ
โ โโโ Models/
โ โโโ ... # ๆฐๆฎๆจกๅ
โโโ Package.swift
DebugProbe ้่ฆ้ ๅ DebugHub ๆๅก็ซฏไฝฟ็จ๏ผ
- ๅฏๅจ DebugHub ๆๅกๅจ
- ๅจ iOS App ไธญ้ ็ฝฎ DebugProbe ่ฟๆฅๅฐ DebugHub
- ๆๅผ Web UI (http://localhost:8081) ๆฅ็่ฐ่ฏไฟกๆฏ
้กน็ฎๅ ๅซๅฎๆด็ Demo ๅทฅ็จ๏ผๆผ็คบๆๆๅ่ฝๆจกๅ็ไฝฟ็จๆนๆณ๏ผ
# Demo ๅทฅ็จไฝ็ฝฎ
DebugProbe/Demo/DebugProbeDemo/
# ไฝฟ็จ Xcode ๆๅผ
open Demo/DebugProbeDemo/DebugProbeDemo.xcodeprojDemo ๅ ๅซไปฅไธๅ่ฝๆผ็คบ๏ผ
- HTTP ่ฏทๆฑ - GET/POST/PUT/DELETE/ๆไปถไธไผ /ๅนถๅ่ฏทๆฑ
- WebSocket - ่ฟๆฅ็ฎก็ใๆถๆฏๆถๅ
- ๆฅๅฟ็ณป็ป - ๅค็บงๅซๆฅๅฟๅ้
- ๆฐๆฎๅบ - SQLite CRUD ๆไฝ
- Mock ่งๅ - API Mock ้ ็ฝฎ
- ่ฎพ็ฝฎ - DebugHub ่ฟๆฅ้ ็ฝฎ
่ฏฆ่ง Demo README
- iOS 14.0+
- macOS 12.0+
- Swift 5.9+
- Xcode 15.0+
- CocoaLumberjack - ็จไบๆฅๅฟๆ่ท้ๆ
MIT License
- Debug Platform - ๅฎๆด็่ฐ่ฏๅนณๅฐ๏ผๅ ๅซ Debug Hub ๆๅก็ซฏๅ Web UI๏ผ



