#include <windows.h>
#include <dbghelp.h>
#include "epicsStackTracePvt.h"
#include "epicsStackTrace.h"
#include "epicsString.h"
#include "epicsStdio.h"
#include "gpHash.h"
Go to the source code of this file.
Definition at line 35 of file osdFindAddr.c.
37 static int first_call = 1;
38 static HANDLE process =
NULL;
39 DWORD64 displacement64 = 0;
40 DWORD displacement = 0;
48 SymSetOptions(SYMOPT_LOAD_LINES | SYMOPT_DEFERRED_LOADS);
49 process = GetCurrentProcess();
54 symbol = (SYMBOL_INFO *)calloc(
sizeof(SYMBOL_INFO) + (
MAX_SYM_SIZE + 1) *
sizeof(
char), 1);
56 symbol->SizeOfStruct =
sizeof(SYMBOL_INFO);
57 if (!SymFromAddr(process, (DWORD64)addr, &displacement64, symbol))
74 symbol_data->
value = (
void*)symbol->Address;
75 line.SizeOfStruct =
sizeof(IMAGEHLP_LINE64);
76 if (SymGetLineFromAddr64(process, (DWORD64)addr, &displacement, &line))
79 symbol_data->
line = line.LineNumber;
80 len = strlen(line.FileName) + 32;
81 symbol_data->
fileAndLine = calloc((len + 1) *
sizeof(
char), 1);
84 symbol_entry->
userPvt = symbol_data;
char * strdup(const char *)
LIBCOM_API void epicsStdCall gphInitPvt(struct gphPvt **ppvt, int tableSize)
LIBCOM_API GPHENTRY *epicsStdCall gphFind(struct gphPvt *pvt, const char *name, void *pvtid)
LIBCOM_API int epicsStdCall epicsSnprintf(char *str, size_t size, const char *format,...) EPICS_PRINTF_STYLE(3
LIBCOM_API GPHENTRY *epicsStdCall gphAdd(struct gphPvt *pvt, const char *name, void *pvtid)
int epicsFindAddrGetFeatures |
( |
void |
| ) |
|
Definition at line 93 of file osdFindAddr.c.
97 # if defined(_WIN64) && defined(EPICS_CALL_DLL) #define EPICS_STACKTRACE_LCL_SYMBOLS
#define EPICS_STACKTRACE_GBL_SYMBOLS
#define EPICS_STACKTRACE_DYN_SYMBOLS