Saludos al foro!
No se si ha alguien le ha surgido este problema, se trata de identificar desde el propio programa si estamos corriendo el programa mediante un emulador tipo ICD, PicKit, etc o es la versión compilada ejecutándose.
Supongo que habrá métodos más elegantes, pero ésta es la función que yo utilizo y me funciona muy bien:
// -----------------------------------------------------------------------------------------------------------
// Función que devuelve TRUE si estamos emulando con el ICD, PicKit, etc
// -----------------------------------------------------------------------------------------------------------
short Hay_Debugger() { // Devuelve true si estamos depurando
long i; // Contador genérico
char Buffer[8]; // Buffer de lectura
i = getenv("PROGRAM_MEMORY"); // Carga el final de la memoria
Read_Program_Memory(i-0x100, Buffer, 8); // Leemos 8 bytes de la memoria reservada
for (i=0;i<8;i++) { // Comprobamos los bytes
if (Buffer[i]!=0xFF) { // Miramos si alguno no es 0xFF
return(true); // Algún valor no es 0xFF, hay Debug
}
}
return (false); // Todas son 0xFF, no hay Debug
}