Define: USB Debugging

time to read 2 min | 356 words

USB Debugging takes its name from the way you usually deploy to staging servers.

The act of finding bugs on staging servers where you cannot install any tools and have no network that you have access to, but you are allowed to copy files via USB key (which is first screened by security {each time you copy}).

In those situations, the cycle of deploying usually goes like this:

  1. Copy files to USB key
  2. Hand to security
    1. Optional: Have an argument about files with two extentions (Foo.designer.cs) not really being viruses in hiding, despite what the anti virus rules claims.
  3. Copy files to server
  4. Modify config files to use staging server settings
  5. Run application
  6. Watch it crash with no reason and no log
  7. Check the code and realize that you told it to take the log4net.config from the current directory, but a service's directory is \Windows\System32
  8. Repeat steps 1 - 5, optionally with the same argument
  9. Watch crash with log
  10. Fix tiny bug
  11. Repeat steps 1 - 5
  12. Discover that it the service is hard configed (meaning that the config entry is not there and the value is the default one) to listen only to localhost, and the last two hours that you spent checking firewall configuration has been for naught.
  13. Repeat steps 1 -  5
  14. This is the most fun when you realize that a required dependency is missing (JET on 64 bits, for instance), and you need to replace it on the spot.