I’m sure I’m not the first person to come up with this. However, I haven’t noticed anyone publish a trick like this since I started paying close attention to the community last July. So, I thought I’d post it this quick and easy debug tip.
I’m working on an event receiver that started to generate this error in the 12 hive:
Error loading and running event receiver Conchango.xyzzyEventReceiver in xyzzy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=blahbalhbalh. Additional information is below. : Object reference not set to an instance of an object.
I didn’t know where I had introduced this bug because I had done too many things in one of my code/deploy/test cycles.
I tried this solution to get my pdb in there with hopes that SharePoint’s 12 hive would show the stack trace, but no luck. I don’t know if it’s possible and if someone does, please let me know 🙂
I know it’s possible to write your own log messages to the 12 hive. Frankly, I wanted something a little less scary and quicker to implement.
It occurred to me that I could at least get some basic trace information by catching and re-throwing generic exceptions like this:
try { UpdateEditionDate(properties); } catch (Exception e) { throw new Exception("Dispatcher, UpdateEditionDate(): Exception: [" + e.ToString() + "]."); }
This showed up in the 12 hive thusly:
Error loading and running event receiver Conchango.xyzzyEventReceiver in xyzzy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=blahblahblah. Additional information is below. : Dispatcher, UpdateEditionDate(): Exception: [System.NullReferenceException: Object reference not set to an instance of an object. at Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties properties) at Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties properties, String eventDescription)].
That gave me all the detail I needed to track down that particular problem and I expect to use it a lot going forward.
</end>
Better yet, incorporate a logging library like Enterprise Library or log4net and your life will be even easier.