A full dump pretty much gets everything in memory for the application at the time the dump is taken. Because of this, a process taking one gig of memory will likely result in a one gig dump file.
· A full dump will have this information:
Heap memory - objects, variables created by free or malloc (in C++).
· Call stacks of all threads - all function calls being processed with their variables on the stack.
· Thread and environment blocks - This shows what the current thread is and its state.
· Assembly code - Used to see what the exact instructions were which executed.
· Module information - This is information on each code file loaded by the process.
Mini dumps can be used for diagnosing things like hangs or when you have a fault (crash) you want to find the cause of. A Mini-dump will not have all of the information that a full dump will contain and is often only a fraction of the size of a full dump.
A minidump will consist of the following information:
· The Callstack for all running threads
· The exception information on what caused the fault (if there was one) and the thread context of the fault.
· A list of all loaded modules
· The processor Context for all threads.
A few things to note:
You should compress/zip dumps if they are going to be sent to a remote location. Zipping can reduce the filesize by around 75%. This not only saves space, it also saves on transmission time.
You’ll want to be sure that the executable (.DLL,.EXE, etc) was not stripped by email antivirus
on the sending or receiving end. That's why it’s often good to put code and executables in a password-protected zip file when such content is going to be emailed.