| 1 | = Troubleshooting Crash Problem on Win32 = |
| 2 | |
| 3 | The best way to find the crash is to equip your program with debugging info (for the Release mode) so that we can know exactly where the crash location is. A debugging info will not slow down your application, although it will add size to it, so it shouldn't be a problem. |
| 4 | |
| 5 | == Building Application with Debugging Info == |
| 6 | |
| 7 | The instructions here applies for Visual Studio 6: |
| 8 | * For '''all''' libraries, open ''Project Settings'', then go to ''C/C++ General Tab'', set ''Debug Info'' to '''Program Database'''. |
| 9 | * Then in the application project, open ''Project Settings'', go to ''Link'' tab, enable '''Generate debug info'''. |
| 10 | * Rebuild all libraries and application |
| 11 | |
| 12 | Now a .PDB (Program Database) file will be generated for the application. |
| 13 | |
| 14 | == Distributing Application == |
| 15 | |
| 16 | When distributing the application executable, the .PDB file (for the application) needs to be distributed alongside the application. Put the .PDB file on the same directory as the application. |
| 17 | |
| 18 | Note that whenever the application is rebuilt, don't forget to update the .PDB file as well or otherwise the debugging information will not contain the correct information. |
| 19 | |
| 20 | == Testing if Crash Reporting Works == |
| 21 | |
| 22 | Before running the application with real usage, it's probably better to test if the error reporting works correctly. |
| 23 | |
| 24 | Add a code somewhere to simulate a crash, something like: |
| 25 | {{{ |
| 26 | int *p = (int *)0; |
| 27 | *p = 0; |
| 28 | }}} |
| 29 | |
| 30 | It's probably best to place this crash generator code somewhere deep in the libraries to make sure that crash in the library is properly reported. |
| 31 | |
| 32 | |
| 33 | == Checking the Crash Report == |
| 34 | |
| 35 | If the target |