not just the ones that people actually try to come in on
But that goes beyond a tool you can run yourself, and into the realm of (paid) services. Which in turn gets into "a service is only as good as its robot". If GreatSite links to you, but they've blocked UsefulToolBot for whatever reason, then UsefulTool will never be able to tell you if GreatSite's links are valid.
In practice, though, the links people are actually using are the ones you really need to know about. That's where you open up your raw logs in a text editor and search using the appropriate Regular Expression such as (for Apache)
(GET|HEAD) \S+ HTTP/1\.[01]" 4(04|10) \d+ "http
This will also bring up any 404s whose referer happens to be your own site-- but that's just as well, since you would
certainly want to know about those! I'd include both GET and HEAD, because a HEAD request may be someone else's link checker at work, and those are the ones most likely to respond to a "can you please fix this?" request.
As long as you're in there, you might throw 301 into the mix to pick up the valid-but-imperfect links.
[edited by: aakk9999 at 12:58 am (utc) on Nov 30, 2014]