Pero quizás tengas que preguntarte primero si en realidad te hacen falta dos hilos.
En caso afirmativo, una solución rápida es que las variables se creen en la clase TDebugger y se asignen en execute. Las variables que necesita leer el hilo principal siempre deben leerse con un método de TDebuger y a ser posible no deben ser asignadas mientras TDebugger se ejecuta. Puedes saber si la variable leída es válida dándole determinado valor en caso de no ser válido. Por ejemplo, puede ser un puntero inicializado a NULL en cuyo caso no trataras de leerlo, pero puedes hacer un bucle (con un sleep corto) hasta tener un valor correcto. También puedes controlarlas con otra variable que se pone a true cuando el valor es válido...
WaitForSingleObject puede ser usado con otros tipos de Handle que no tienen que ser el Thread, puedes usar un
Mutex o un
Event. Estos también te pueden servir para poner el hilo a la espera. Todo depende de tu diseño particular.
Saludos.