Debug can often be difficult, especially if you do not have perfect information. Let's go through how I organize hardware debug.
Step 1: Make all problems continuous
If you have an intermittent problem treat it as continuous. If you can find a way to make the number of failures more frequent.
Step 2: Determine if you have perfect information
Most hardware problems have perfect information. What I mean by this is that the exact conditions for correct operation are known.
For example starting up a CPU and loading its firmware. You known exact what inputs are required, you know the configuration (or quality) of those inputs. You also know what kind of outputs it produces and the correctness of those outputs. When those requirements are met your hardware will function. If it does not work consider that the part may be bad and needs replacement.
When you do not have perfect information you need to resort to what most people call 'debug': deduction, induction, bisection, educated guessing, etc. This is my least favorite way to debug and I avoid when I can.
Step 3: Apply debug steps
Apply these steps for perfect information debug:
You will eventually measure an item that is out of spec. This will be your fix.