Ah, I meant to reply specifically to the command line flags use case.
For most other uses of globals, I fully agree.
Ah, then I misunderstood you, sorry.
Of course this is a bit of a red herring anyway... As the original commenter remarked already, command line flags may be stored globally (eg. as read-only fields), but won't - and shouldn't - be variables.
They're only given once, and their values aren't going to change throughout the program's running time. So they're essentially constants, which is fine.
A bug can be extremely hard to replicate, because it only arises from a very specific sequence of events that step-by-step flip the globals into an overall invalid state. And it's virtually impossible to determine "whodunnit".
It's a perfect recipe for "the app sometimes crashes on Thursdays" scenario.