views:

38

answers:

2

My company participates in Windows Error Reporting via Winqual. We'd like to add some additional data to our crash reports, using WERRegisterMemoryBlock. Obviously we'd like to make sure this is working before we ship our next version. How can we test it?

Is there a way to locally preview precisely what is going to be sent? Does this realistically reproduce what we are going to be able to retrieve from Winqual?

Alternatively, can we generate a real report from a developer machine, then retrieve the report from Winqual? How would we distinguish this test case from the rest of our Winqual data?

+1  A: 

The best test would be to map a test only version of your product. You can verify that the expected information is present and then make sure you change the version and upload a new product mapping file before shipping

abfo
+1  A: 

[...] can we generate a real report from a developer machine, then retrieve the report from Winqual?

  • build a special test version of your application
  • upload a product mapping for this test version to WER
  • crash the test version on a machine with error reporting enabled
  • check Winqual, after a couple of days a report should show up
  • if the report does not come with CAB data already, enable additional data request (in Winqual)
  • crash the test version again on a machine with error reporting enabled
  • check Winqual, after a couple of days a report with CAB data should be waiting for you
  • download the CAB data and check if/that it contains what you need (you will need to use WinDbg to get the full picture, VS is not as thorough with minidumps as WinDbg)

How would we distinguish this test case from the rest of our Winqual data?

  • give the test version a special name and version (EXE name and *.rc)
  • just using a different "product name" and "product version" (=WER friendly names) is not enough to get an extra event ID / bucket, but an extra EXE name plus "Product Name" for the application mapping should do the trick
tagon
I've also used a special plugin in our app that doesn't ship to customers but forces a crash by dereferencing a NULL pointer. By doing that you have a reproducible way of crashing the program on demand.
the_mandrill