Debugging — first checks
Debugging — first checks
Section titled “Debugging — first checks”Do not start by changing random code. First classify what you can actually observe.
Stay at loader/setup level. A gameplay API cannot fix a loader that never started.
Inspect Player.log →Use the exact CSxxxx code and message. Fix compilation before runtime logic.
Compare your skeleton with the minimal working recipe and inspect nearby loader messages.
Minimal mod recipe →Your entry path ran. Narrow the test to that one feature and its objects/state.
Choose the symptom →Start from the first useful exception and call chain, not every red-looking line in the file.
Analyze signatures →Treat it as persistence/lifecycle until evidence says otherwise. Do not assume in-memory state survives.
Check verified boundaries →Make a tiny reproduction
Section titled “Make a tiny reproduction”A useful reproduction contains:
exact game / NML / dependency versionssmallest save/world state neededexact stepsexpected resultactual resultrelevant Player.log excerptRemove unrelated systems when possible. If the issue disappears after removing something, that is useful evidence too.
Do not treat every scary log line as the cause
Section titled “Do not treat every scary log line as the cause”Network/TLS lines and fallback-library messages can exist without being the reason your feature failed. The analyzer labels known noise separately, but a signature match still does not prove root cause.