Unix applications are pretty good at telling you when they break. You’ll either get informative messages at the command line or you will get informative messages in a log file somewhere (/var/log for Linux boxes where I live these days) and Googling for said messages is usually rewarding too. I’ve had to track down a few bugs lately where I got neither helpful command line warnings or helpful log messages, in one instance it was syslogd and in another it was sshd and both were silently failing to start/run. In both instances the failure was caused by SELinux. So my new debugging rule for anything which is silently failing is to try disabling SELinux first (or changing it to permissive mode though that doesn’t always work either), if the service works without SELinux the problem is with SELinux.
NB. Java programs unhelpfully break my assertion about helpful logging- Java developers seem to delight in spooling out pages of eye-gouging text instead of just telling you what broke, how and why.