Hi,
Your exception handler looks nice, but I would change a few things:
* Print name of exception
* For some exceptions you have an errorcode. This can be quite useful for Pagefaults because it says you if the PF was caused by a read or write operation.
* You can get the address of a PF from CR2
* You can also get if a PF was caused by a normal read or by executing wrong memory (just compare CR2 with EIP)
This is a screenshot of my exception handler. The exception is caused by "*((char*)0) = 0". I know the stack trace isn't something special...
EDIT: oh I see, you already print the errorcode, but you could write this a bit user friendlier to screen, because this safes time everytime you have to decode the errorcode to something usable.