3
我試圖在我的代碼中使用tracing來調試一些SQLite查詢,只是將所發生的一切記錄到控制檯,但似乎幾乎沒有關於它的任何信息 - 谷歌搜索「sqlite3_trace_v2 swift」只返回兩頁結果,除了上面的鏈接外,其中沒有一個是有用的。使用下面的代碼,我能得到它的地步,至少運行跟蹤回調:用於日誌記錄的SQLite跟蹤
func traceSQL (database: OpaquePointer?) {
var pointer: OpaquePointer?
func traceCallback (mask: UInt32, pointer: UnsafeMutableRawPointer?, query: UnsafeMutableRawPointer?, result: UnsafeMutableRawPointer?) -> Int32 {
print("SQLite Trace:")
if let query = query?.load(as: UnsafePointer<Int8>.self) {
print(String(cString: query))
} else {
print("Could not load query.")
}
if let result = result?.load(as: UnsafePointer<Int8>.self) {
print(String(cString: result))
} else {
print("Could not load result.")
}
return 0
}
sqlite3_trace_v2(database, 15, traceCallback as @convention(c) (UInt32, UnsafeMutableRawPointer?, UnsafeMutableRawPointer?, UnsafeMutableRawPointer?) -> Int32, &pointer)
}
,但我無法弄清楚如何處理函數的輸出做 - 目前,它只是打印出一串不可讀的字符,我以前的嘗試甚至沒有管理。我懷疑至少有部分問題是我不知道如何在Swift中使用UnsafeMutableRawPointer
(其他東西似乎缺少可用的信息)。
tl; dr:如何從SQLite記錄追蹤結果?