No dices qué sistema operativo usas, pero con
GDB (el depurador de GNU) puedes depurar programas que ya estén iniciados. Para ello hay que saber el identificador del proceso. Sabiendo la posición de memoria puedes iniciar GDB, "interceptar" el proceso del servidor y poner un "break" para que cuando el proceso acceda a la posición de memoria se active y empezar a depurar. Claro que si dices que puede tirarse varios días sin salir el error pues es un problema, aunque creo que también puedes hacer que GDB avise de algún modo (al menos en sistemas POSIX, como puedes encadenar procesos como te da la gana, puedes hacer que envíe un mensaje de correo cada vez que GDB pare un proceso).
Yo GDB lo uso sólo para depuraciones simples, es decir, ejecución paso a paso, ver el contenido de variables, y poco más, así que no sé cómo se hace exactamente. Tiene muchísimas opciones y comandos.