As usual, when I put a game out on the showcase theres always a few fatal crash bugs, where the description tends to be “it crashed”, or if someone is feeling helpful, a stacktrace. Usually fixing these requires asking for a complete log of the console out, or adding extra diagnostic code and getting someone to rerun it and post the results.
I’d like to make the whole process faster/easier, so problems can be found and nailed quicker. Practically that means getting the complete console/log messages and any exception traces back without having to ask the user. (Previous attempts when I’ve specifically generated a log file, while helpful, usually mean that no-one actually bothers to include it unless requested multiple times).
So the problem seems to break down into:
-
Actually returning the log/error report.
Obvious answer is emailing it to an address specifically for this purpose. However the only library to do this is the JavaMail API, which IIRC needs to be manually installed on the users pc before use. Not really practical.
Alternatively they could be ftp-ed onto a server using an ftp user specifically for this (IIRC I should be able to allow the user no read access and write-only access to the specific sub dir). I’m currently looking into FtpBean ( http://www.geocities.com/SiliconValley/Code/9129/javabean/ftpbean/ ) for this, which is nice and tiny and pure java, so can be bundled with the app easily. -
What to tell the user about the error reports.
I know some people don’t like apps ‘phoning home’ without telling them, and can in some cases get your app labled as spyware. However most errors happen on display creation, so I don’t get a chance to tell the user that it might send an error log. How should this be handled? Maybe just a bit of text on the webpage where you download the app would be good enough, but frankly most people don’t read those and they’re going to be surprised when their firewall starts detecting connections. -
Identifying the user who filed the report.
If someone gets a crash, and then posts a message like “it didn’t work”, it would be nice to figure out which log corrresponds to that person. However, I don’t want to include the username they’re logged in with (or similar), as then I’d be sending non-anon info in the error report. Maybe timestamps would be good enough on their own? I could ask the user to type in a username/id/something, but again most crashes happen before display init, so that could be tricky.
Opinions?