Compartir a través de


_EFN_StackTrace (Función)

Proporciona una representación de texto de un seguimiento de pila administrado y una matriz de registros CONTEXT, uno por cada transición entre código no administrado y código administrado.

HRESULT CALLBACK _EFN_StackTrace(
    [in]  PDEBUG_CLIENT  Client,
    [out] WCHAR          wszTextOut[],
    [out] size_t         *puiTextLength,
    [out] LPVOID         pTransitionContexts,
    [out] size_t         *puiTransitionContextCount,
    [in]  size_t         uiSizeOfContext,
    [in]  DWORD          Flags
);

Parámetros

  • Client
    [in] Cliente que se está depurando.

  • wszTextOut
    [out] Representación de texto del seguimiento de pila.

  • puiTextLength
    [out] Puntero al número de caracteres de wszTextOut.

  • pTransitionContexts
    [out] Matriz de contextos de transición.

  • puiTransitionContextCount
    [out] Puntero al número de contextos de transición en la matriz.

  • uiSizeOfContext
    [in] Tamaño del búfer de contexto.

  • Flags
    [in] Se establece en 0 o en SOS_STACKTRACE_SHOWADDRESSES (0x01) para mostrar el registro EBP y el puntero de pila ESP delante de cada línea de module!functionname.

Comentarios

Se puede llamar a la estructura _EFN_StackTrace desde una interfaz de programación WinDbg. Los parámetros se utilizan de la siguiente manera:

  • Si el valor de wszTextOut es null y el valor de puiTextLength no es null, la función devuelve la longitud de cadena de puiTextLength.

  • Si el valor de wszTextOut no es null, la función almacena el texto en wszTextOut hasta la ubicación indicada por puiTextLength. Devuelve un resultado correctamente si había espacio suficiente en el búfer; en caso contrario, devuelve E_OUTOFMEMORY.

  • Se omite la parte de la función correspondiente a la transición si los valores de pTransitionContexts y puiTransitionContextCount son null. En este caso, la función proporciona a los llamadores un resultado de texto que sólo tiene los nombres de función.

  • Si el valor de pTransitionContexts es null y el de puiTransitionContextCount no es null, la función devuelve el número necesario de entradas de contexto en puiTransitionContextCount.

  • Si el valor de pTransitionContexts no es null, la función lo trata como una matriz de estructuras de longitud puiTransitionContextCount. uiSizeOfContext determina el tamaño de la estructura, que debe ser igual al tamaño de SimpleContext o CONTEXT para la arquitectura.

  • wszTextOut se escribe con el formato siguiente:

    "<ModuleName>!<Function Name>[+<offset in hex>]
    ...
    (TRANSITION)
    ..."
    
  • Si el desplazamiento en valor hexadecimal es 0x0, no se escribe ningún desplazamiento.

  • Si no hay código administrado en el subproceso que está actualmente en contexto, la función devuelve SOS_E_NOMANAGEDCODE.

  • El valor del parámetro Flags es 0 o SOS_STACKTRACE_SHOWADDRESSES para ver EBP y ESP delante de cada línea de module!functionname. De forma predeterminada, el valor es 0.

    #define SOS_STACKTRACE_SHOWADDRESSES   0x00000001
    

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: SOS_Stacktrace.h

Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vea también

Otros recursos

Funciones estáticas globales para la depuración