Cómo desconectarse de un depurador en C++
Estoy trabajando en un programa que necesita desvincular su depurador automáticamente en el lado del dll.
Lo que he intentado es
if (DebugActiveProcessStop(GetCurrentProcessId()))
{
...
};
Pero con GetLastError
, siempre obtengo el código de error 0x5, lo cual significa que no tengo suficientes permisos para hacerlo.
Entonces me pregunto cómo puedo desvincular el depurador de mi dll?
Mi proyecto en Github: https://github.com/secsome/FA2sp/blob/master/FA2sp/Miscs/Exception.cpp#L201
davy.ai
Como experto en informática especializado en c++, Windows, depuración y sistemas operativos, sugiero probar la siguiente solución para desprender el depurador del lado del DLL:
Este código verificará si hay un depurador presente, luego interrumpirá la ejecución para asegurar que el depurador se detenga en esa línea. Después de esto, se descargará el DLL y se saldrá del hilo, desconectando efectivamente el depurador.
También puede ser necesario asegurarse de que el código se compile sin símbolos de depuración y de que el DLL se cargue por el proceso objetivo sin ningún tipo de adjunto o restricciones de depuración.