Bob Balaban November 16 2008 12:24:03 PMGreetings, Geeks!
I've been debugging a Notes CAPI program the last few days. It was intermittently crashing, and bringing down the Notes Client too, if the client happened to be running. I was having a heck of a time figuring out where the crash was actually happening, though, because NSD would always kick in and do its logging thing. Unfortunately, the NSD log was useless to me in this particular situation.
In the old days, I would just (on Windows) set the Visual Studio C++ debugger to auto-launch as the "just in time debugger". But this time, NSD was always catching the system exception itself. Very frustrating.
So then, how to disable NSD? The obvious way -- rename nsd.exe to something else -- "worked", in that it didn't launch NSD, but it didn't launch the c++ debugger either.
So I did what I usually do in these situations: I sent out a RFH (request for help) to my friends. And, as usual with one of these super-geeky coding issues, my friend Daniel Nashed had the correct answer. Actually, he had the "easy" answer, I had already found a more difficult answer myself. :-)
First the "not as easy" answer: I trolled the Lotus doc dbs, didn't find much. Then I tried entering:
in a cmd window. That launched some HTML doc that told me all about the command line options for nsd (I must say I was impressed, I didn't really think it would work. Kudos to the NSD team at Lotus!)
The command: nsd -detach did the trick.
Then I got Daniel's email with an even easier answer: add "apideveloper=1" to notes.ini! Daniel even sent me the relevant extract from the CAPI toolkit documentation. Exactly what I needed. Thanks Daniel!!
"Just In Time" (JIT) Debugger
Windows only: Beginning with the Notes/Domino 6 release, the method by which Notes/Domino software functions following a crash has been modified.
In the past Notes/Domino would, in the event of a crash, invoke the system's "Just In Time" (JIT) debugger (e.g. Dr. Watson, QNC, MSDEV), but with Notes/Domino 6 this is no longer the case. To aid C API developers, the notes.ini variable, APIDevloper = 1, has been implemented.
When the APIDeveloper = 1 variable is added to the notes.ini file, C API developers can again capture and debug a crashing application using the JIT, much like they could in pre Notes/Domino 6 releases.
In the event of a crash, all Notes/Domino related processes must be terminated before any of them can be restarted.
(Need expert application development architecture/coding help? Contact me at: bbalaban, gmail.com)
Follow me on Twitter @LooseleafLLC
This article ©Copyright 2009 by Looseleaf Software LLC, all rights reserved. You may link to this page, but may not copy without prior approval.
- Comments