Función SymInitialize (dbghelp.h)
Inicializa el controlador de símbolos para un proceso.
Sintaxis
BOOL IMAGEAPI SymInitialize(
[in] HANDLE hProcess,
[in, optional] PCSTR UserSearchPath,
[in] BOOL fInvadeProcess
);
Parámetros
[in] hProcess
Identificador que identifica al autor de la llamada. Este valor debe ser único y distinto de cero, pero no debe ser un identificador de proceso. Sin embargo, si usa un identificador de proceso, asegúrese de usar el identificador correcto. Si la aplicación es un depurador, use el identificador de proceso para el proceso que se está depurando. No use el identificador devuelto por GetCurrentProcess. El identificador usado debe ser único para evitar compartir una sesión con otro componente y el uso de GetCurrentProcess puede tener resultados inesperados cuando varios componentes intentan usar dbghelp para inspeccionar el proceso actual. El uso de GetCurrentProcess al depurar otro proceso también hará que las funciones como SymLoadModuleEx tengan resultados inesperados.
Este parámetro no puede ser NULL.
[in, optional] UserSearchPath
Ruta de acceso o serie de rutas de acceso separadas por un punto y coma (;), que se usa para buscar archivos de símbolos. Si este parámetro es NULL, la biblioteca intenta formar una ruta de acceso de símbolo de los orígenes siguientes:
- Directorio de trabajo actual de la aplicación
- Variable de entorno _NT_SYMBOL_PATH
- Variable de entorno _NT_ALTERNATE_SYMBOL_PATH
[in] fInvadeProcess
Si este valor es TRUE, enumera los módulos cargados para el proceso y llama eficazmente a la función SymLoadModule64 para cada módulo.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es TRUE.
Si se produce un error en la función, el valor devuelto es FALSE. Para recuperar información de error extendida, llame a GetLastError.
Comentarios
La función SymInitialize se usa para inicializar el controlador de símbolos de un proceso. En el contexto del controlador de símbolos, un proceso es un objeto cómodo de usar al recopilar información de símbolos. Normalmente, los depuradores usan los controladores de símbolos y otras herramientas que necesitan cargar símbolos para un proceso que se está depurando.
El identificador pasado a SymInitialize debe ser el mismo valor pasado a todas las demás funciones de controlador de símbolos a las que llama el proceso. Es el identificador que las funciones usan para identificar al autor de la llamada y buscar la información de símbolo correcta. Cuando haya terminado de usar la información de símbolos, llame a la función SymCleanup para desasignar todos los recursos asociados al proceso para el que se cargan los símbolos.
La búsqueda de archivos de símbolos se realiza de forma recursiva para todas las rutas de acceso especificadas en el parámetro UserSearchPath . Por lo tanto, si especifica el directorio raíz en una búsqueda, se busca toda la unidad, lo que puede tardar mucho tiempo. Tenga en cuenta que el directorio que contiene el archivo ejecutable del proceso no forma parte automáticamente de la ruta de acceso de búsqueda. Para incluir este directorio en la ruta de acceso de búsqueda, llame a la función GetModuleFileNameEx y agregue la ruta de acceso devuelta a UserSearchPath.
Un proceso que llama a SymInitialize no debe llamarlo de nuevo a menos que llame primero a SymCleanup . Si la llamada a SymInitialize establece fInvadeProcess en TRUE y simplemente necesita volver a cargar la lista de módulos, use la función SymRefreshModuleList .
Todas las funciones DbgHelp, como esta, son un único subproceso. Por lo tanto, es probable que las llamadas desde más de un subproceso a esta función producirán un comportamiento inesperado o daños en la memoria. Para evitar esto, llame a SymInitialize solo cuando se inicie el proceso y SymCleanup solo cuando finalice el proceso. No es necesario que cada subproceso del proceso llame a estas funciones.
Para llamar a la versión Unicode de esta función, defina DBGHELP_TRANSLATE_TCHAR.
Ejemplos
Para obtener un ejemplo, vea Inicializar el controlador de símbolos.
Requisitos
Plataforma de destino | Windows |
Encabezado | dbghelp.h |
Library | Dbghelp.lib |
Archivo DLL | Dbghelp.dll |
Redistribuible | DbgHelp.dll 5.1 o posterior |