PStack
2.0
Stack trace printer for MSVC and GCC binaries
|
Wraps invocations into the Windows DbgHelp DLL onto a lazily-loaded version. More...
#include <debug_help_dll.hpp>
Construction / Destruction | |
debug_help_dll () noexcept | |
Construct (without loading) an instance to wrap DbgHelp.dll. | |
Public Interface | |
void | load_all_functions () |
Populates all loaded_function instances in from the library immediately. More... | |
DbgHelp Imports | |
loaded_function< decltype(::StackWalk64)> | StackWalk64 |
See MSDN for details on StackWalk64. | |
loaded_function< decltype(::SymCleanup)> | SymCleanup |
See MSDN for details on SymCleanup. | |
loaded_function< decltype(::SymFromAddr)> | SymFromAddr |
See MSDN for details on SymFromAddr. | |
loaded_function< decltype(::SymFunctionTableAccess64)> | SymFunctionTableAccess64 |
See MSDN for details on SymFunctionTableAccess64. | |
loaded_function< decltype(::SymGetModuleBase64)> | SymGetModuleBase64 |
See MSDN for details on SymGetModuleBase64. | |
loaded_function< decltype(::SymGetOptions)> | SymGetOptions |
See MSDN for details on SymGetOptions. | |
loaded_function< decltype(::SymInitialize)> | SymInitialize |
See MSDN for details on SymInitialize. | |
loaded_function< decltype(::SymSetOptions)> | SymSetOptions |
See MSDN for details on SymSetOptions. | |
Additional Inherited Members | |
Public Types inherited from psystem::shared_library | |
using | library_version = uint32_t |
Type for shared library versions. More... | |
Public Member Functions inherited from psystem::shared_library | |
~shared_library () noexcept | |
Clean up the shared library. More... | |
library_version | get_version () const |
Access the version for the library that this instance wraps. More... | |
bool | is_loaded () const noexcept |
Determines if the shared library is mapped into the process space. More... | |
void | load () |
Loads the requested library into the current process space. More... | |
void | unload () noexcept |
Unload this library and clear the function pointers. More... | |
Protected Member Functions inherited from psystem::shared_library | |
shared_library (std::string library_name, size_t num_functions) noexcept | |
Construct a shared library instance (without loading the module). More... | |
FARPROC | get_function (char const *export_name) const |
Acquire a function pointer (by name) from a loaded library. More... | |
template<size_t N> | |
void | load_all_functions (char const *export_names[N]) |
Fully populate the m_functions data with addresses. More... | |
Protected Member Functions inherited from psystem::not_copyable | |
not_copyable (not_copyable const &)=delete | |
Delete the copy constructor. | |
not_copyable & | operator= (not_copyable const &)=delete |
Delete the assignment operator. | |
constexpr | not_copyable () noexcept |
A simple CTOR suitable for noexcept and constexpr uses. | |
~not_copyable () noexcept | |
A simple CTOR suitable for noexcept uses. | |
Protected Attributes inherited from psystem::shared_library | |
std::vector< FARPROC > | m_functions |
The cache of function pointers gathered from a loaded library. | |
psystem::shared_handle< HMODULE, nullptr > | m_library_handle |
The system handle to the loaded library. It may be nullptr . | |
std::string | m_library_name |
The (passed-in) name of the library that this class represents. | |
Wraps invocations into the Windows DbgHelp DLL onto a lazily-loaded version.
This decoupling of the "automatic" DLL invocation allows us to check the version of DbgHelp.dll before continuing. Slight API differences have caused difficulty in the past.
void psystem::debug_help_dll::load_all_functions | ( | ) |
Populates all loaded_function instances in from the library immediately.
psystem::exception::system_exception | if any of the following occur:
|