Compartir a través de


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
Tenga en cuenta que la ruta de acceso de búsqueda también se puede establecer mediante la función SymSetSearchPath .

[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

Consulte también

Funciones de DbgHelp

GetModuleFileNameEx

SymCleanup

SymEnumProcesses

SymLoadModule64

SymRefreshModuleList

SymSetSearchPath