> 1. Is there a better way of restarting Gremlins that brings up the normal
> control window?
Nope. Sadly, its not coming up is a bug. I've included instructions for fixing
the bug at the end of this message.
> 2. Is there some way of getting gdb to access the restarted app again?
Don't know. I don't think so, since gdb needs to be told information about your
application -- information that is sent when the application is started.
What you need is a low-level debugger like:
PalmDebugger,
debuffer (<http://www.pagesz.net/~sessoms/debuffer/>), or
Debug (<http://customers.doubled.com/~joes/>).
These will connect to anything. And while the information you get is at the
assembly level, you should at least be able to get a stack crawl and find out
what function (and where in the function) is causing the problem.
> 3. If I recompile my app to either fix the problem (when I determine what I
> think is causing the problem) or to show additional information or perform
> additional checks, do I have to start the 8 hour run again, or is there some
> way to get the gremlin run to start from the snapshot but using the
> re-compiled app?
Nope. A Gremlin snapshot is a complete state save. There's no way to
surgically replace the old application with the new application.
-- Keith Rollin
-- Palm OS Emulator engineer
Near the top of Application.cpp, add:
Bool gOpenGCWWindow;
Also add an "extern" declaration for it to Application.h. Next, in PrvOnTimer,
after:
if (Patches::EvtGetEventCalled ())
{
...
}
add the following:
if (gOpenGCWWindow)
{
gOpenGCWWindow = false;
Platform::GCW_Open ();
}
After the call to MMFOpenFiles, remove the following:
// If we loaded a session file with a Gremlin running, turn
// it off, but let the user turn it back on.
if (Hordes::IsOn ())
{
Hordes::Stop ();
Platform::GCW_Open ();
}
In Document.cpp, add the following near the top:
#include "Application.h" // gOpenGCWWindow
In OpenOldDocument, after the call to Hordes::PostLoad(), add:
// If we loaded a session file with a Gremlin running, turn
// it off, but let the user turn it back on.
if (Hordes::IsOn ())
{
Hordes::Stop ();
gOpenGCWWindow = true;
}