From 72250daba88cfa6f1c93ee0e925b2cce9bf59991 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Tue, 16 Jan 2024 05:55:53 +0100 Subject: [PATCH] UI: Add a verbose debug logging checkbox next to "Report a bug" @hius07 mentioned something to that effect a while back, makes sense. Unlike the set of checkmarks in the dev settings, this one flips both debug + verbose at once, *and* asks for a restart for framebuffer's sake. Also update the "Report a bug" spiel to request verbose debug logs. --- frontend/dbg.lua | 7 +++++ frontend/device/kobo/device.lua | 2 +- .../ui/elements/common_info_menu_table.lua | 26 ++++++++++++++++++- .../ui/elements/filemanager_menu_order.lua | 1 + frontend/ui/elements/reader_menu_order.lua | 1 + 5 files changed, 35 insertions(+), 2 deletions(-) diff --git a/frontend/dbg.lua b/frontend/dbg.lua index dd159fc4e..2c5cbba71 100644 --- a/frontend/dbg.lua +++ b/frontend/dbg.lua @@ -86,6 +86,13 @@ function Dbg:v(...) end end +--- Conditional logging with a stable ref. +function Dbg.log(...) + if Dbg.is_on then + return LvDEBUG(...) + end +end + --- Simple traceback. function Dbg:traceback() return LvDEBUG(debug.traceback()) diff --git a/frontend/device/kobo/device.lua b/frontend/device/kobo/device.lua index e2df4a95a..5df59a953 100644 --- a/frontend/device/kobo/device.lua +++ b/frontend/device/kobo/device.lua @@ -2,10 +2,10 @@ local Generic = require("device/generic/device") local Geom = require("ui/geometry") local UIManager local WakeupMgr = require("device/wakeupmgr") -local time = require("ui/time") local ffiUtil = require("ffi/util") local lfs = require("libs/libkoreader-lfs") local logger = require("logger") +local time = require("ui/time") local util = require("util") local _ = require("gettext") diff --git a/frontend/ui/elements/common_info_menu_table.lua b/frontend/ui/elements/common_info_menu_table.lua index f79751b3c..7747c647a 100644 --- a/frontend/ui/elements/common_info_menu_table.lua +++ b/frontend/ui/elements/common_info_menu_table.lua @@ -3,6 +3,7 @@ local Device = require("device") local InfoMessage = require("ui/widget/infomessage") local UIManager = require("ui/uimanager") local Version = require("version") +local dbg = require("dbg") local lfs = require("libs/libkoreader-lfs") local _ = require("gettext") local T = require("ffi/util").template @@ -50,6 +51,29 @@ common_info.about = { }) end } +common_info.debug_logging = { + text = _("Enable verbose debug logging"), + checked_func = function() + return G_reader_settings:isTrue("debug_verbose") + end, + callback = function() + -- Unlike in the dev options, we flip everything at once. + if G_reader_settings:isTrue("debug_verbose") then + dbg:setVerbose(false) + dbg:turnOff() + G_reader_settings:makeFalse("debug_verbose") + G_reader_settings:makeFalse("debug") + else + dbg:turnOn() + dbg:setVerbose(true) + G_reader_settings:makeTrue("debug") + G_reader_settings:makeTrue("debug_verbose") + end + -- Also unlike the dev options, explicitly ask for a restart, + -- to make sure framebuffer pulls in a logger.dbg ref that doesn't point to noop on init ;). + UIManager:askForRestart() + end, +} common_info.report_bug = { text = _("Report a bug"), keep_menu_open = true, @@ -58,7 +82,7 @@ common_info.report_bug = { local log_path = string.format("%s/%s", DataStorage:getDataDir(), "crash.log") local common_msg = T(_("Please report bugs to \nhttps://github.com/koreader/koreader/issues\n\nVersion:\n%1\n\nDetected device:\n%2"), Version:getCurrentRevision(), Device:info()) - local log_msg = T(_("Attach %1 to your bug report."), log_path) + local log_msg = T(_("Reproduce the issue with verbose debug logging enabled, and attach %1 to your bug report."), log_path) if Device:isAndroid() then local android = require("android") diff --git a/frontend/ui/elements/filemanager_menu_order.lua b/frontend/ui/elements/filemanager_menu_order.lua index 543e5507c..46d7a5c6d 100644 --- a/frontend/ui/elements/filemanager_menu_order.lua +++ b/frontend/ui/elements/filemanager_menu_order.lua @@ -182,6 +182,7 @@ local order = { "----------------------------", "search_menu", "----------------------------", + "debug_logging", "report_bug", "----------------------------", "system_statistics", -- if enabled (Plugin) diff --git a/frontend/ui/elements/reader_menu_order.lua b/frontend/ui/elements/reader_menu_order.lua index 8ed5bd9d8..b0ab8e127 100644 --- a/frontend/ui/elements/reader_menu_order.lua +++ b/frontend/ui/elements/reader_menu_order.lua @@ -242,6 +242,7 @@ local order = { "----------------------------", "search_menu", "----------------------------", + "debug_logging", "report_bug", "----------------------------", "system_statistics", -- if enabled (Plugin)