As with NAT, DHCP issues are almost always due to an error in the configuration (jokingly referred to as a Layer 8 issue, meaning somebody messed up).
The service dhcp command is turned on by default, but sometimes it has been manually disabled by a network administrator for some reason. (I’ve seen network administrators call Cisco with urgent routing issues on their network after they entered the no ip routing command on their router – seriously!)
DHCP packets need to be permitted through your router if you are using a server on another subnet to administer DHCP configurations. DHCP uses Broadcast messages as part of its process (which routers won’t forward), so the ip address of the DHCP server needs to be added to the router to allow it to forward the Broadcast message as a Unicast packet. The command ip helper-address achieves this. This is another exam-favourite question!
You can also use the following debug commands as part of your troubleshooting process:
debug ip dhcp server events
debug ip dhcp server packet
Please ensure that you type out ALL of these commands onto a router. There is no way on Earth that you will remember them by reading them on a page. Try out the configurations, make mistakes, post questions, break it on purpose (not on a live network), and fix it again.