1. Measure Voltage
1.1 Disconnect battery negative cable from its post
1.2 Measure the voltage between the negative cable and the negative on the battery
1.3 I found it was 12 VDC (It should be 0 VDC)
1.4 Discconect one fuse at one time, and find out when the voltage drops down to 0VDC
1.5 To my case, I disconnected the power cable between the alternator and the battery. The voltage droped to 0VDC. However, the alternator was OK and checked by a shop. I look the disgram, found out that the Crankshaft Position Sensor is also connected with the alternator. That was the reason I checked the condition of this sensor.

2. Test
2.1 Clean the connector
2.2 Disconnect the connector, it repeated the problem everytime, just cranked forever
2.3 Connect the connector to the sensor, it fired up everytime.

Hope it helps.