So it turned out that the problem was a flag I had added to Chrome. By default Chrome won't let your local files access other local files, so I had enabled local-file-loading with the command line flag:
--allow-file-access-from-files
That worked great, except it caused a side effect I didn't realize: when you run local files (or at least local files loaded by other local files) Chrome apparently "sandboxes" them. Unfortunately, Chrome also refuses to debug "sandboxed" code, which meant that my debugger was mysteriously failing.
So, for anyone who wants to run local files in Chrome (say to run a web-based testing framework), the trick is to first add the above flag, but then also add this flag:
--allow-sandbox-debugging
so that Chrome will still trigger the debugger when your code includes a debugger
line in a local file.