Hacking
How to Debug
We have a helper function called logger.dbg to help with debugging. You can use that function to print string and tables:
local logger = require("logger") a = {"1", "2", "3"} logger.dbg("table a: ", a)
Anything printed by logger.dbg starts with DEBUG.
On most target platforms, log output is saved to crash.log in the koreader directory.
04/06/17-21:44:53 DEBUG foo
In production code, remember that arguments are always evaluated in Lua, so,
don't inline complex computations in logger functions' arguments.
If you really have to, hide the whole thing behind a dbg.is_on branch,
like in frontend/device/input.lua.
Bug hunting in KPV (KOReader's predecessor)
A real example of bug hunting in KPV's cache system: https://github.com/koreader/kindlepdfviewer/pull/475
Developing UI widgets
tools/wbuilder.lua is your friend, if you need to create new UI widgets. It
sets up a minimal environment to bootstrap KOReader's UI framework to avoid
starting the whole reader. This gives you quick feedback loop while iterating
through your widget changes. It's also a handy tool for debugging widget
issues.
To get a taste of how it works, try running this command at the root of KOReader's source tree:
./kodev wbuilder
It will spawn up an emulator window with a grid and simple timer widget for demonstration.
You can add more UIManager:show call at the end of tools/wbuilder.lua to
test your new widgets.