Arcane  v4.1.2.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::LibUnwindStackTraceService

Service de trace des appels de fonctions utilisant la libunwind. Plus de détails...

+ Graphe d'héritage de Arcane::LibUnwindStackTraceService:
+ Graphe de collaboration de Arcane::LibUnwindStackTraceService:

Classes

struct  ProcInfo
 Information sur une adresse mémoire. Plus de détails...
 

Fonctions membres publiques

 LibUnwindStackTraceService (const ServiceBuildInfo &sbi)
 
 LibUnwindStackTraceService (ITraceMng *tm)
 
void build () override
 
StackTrace stackTrace (int first_function) override
 Chaîne de caractère indiquant la pile d'appel.
 
StackTrace stackTraceFunction (int function_index) override
 Retourne la pile à d'appel actuelle.
 
- Fonctions membres publiques hérités de Arcane::TraceAccessor
 TraceAccessor (ITraceMng *m)
 Construit un accesseur via le gestionnaire de trace m.
 
 TraceAccessor (const TraceAccessor &rhs)
 Constructeur par recopie.
 
TraceAccessoroperator= (const TraceAccessor &rhs)
 Opérateur de recopie.
 
virtual ~TraceAccessor ()
 Libère les ressources.
 
ITraceMngtraceMng () const
 Gestionnaire de trace.
 
TraceMessage info () const
 Flot pour un message d'information.
 
TraceMessage pinfo () const
 Flot pour un message d'information en parallèle.
 
TraceMessage info (char category) const
 Flot pour un message d'information d'une catégorie donnée.
 
TraceMessage pinfo (char category) const
 Flot pour un message d'information parallèle d'une catégorie donnée.
 
TraceMessage info (bool v) const
 Flot pour un message d'information.
 
TraceMessage warning () const
 Flot pour un message d'avertissement.
 
TraceMessage pwarning () const
 
TraceMessage error () const
 Flot pour un message d'erreur.
 
TraceMessage perror () const
 
TraceMessage log () const
 Flot pour un message de log.
 
TraceMessage plog () const
 Flot pour un message de log.
 
TraceMessage logdate () const
 Flot pour un message de log précédé de la date.
 
TraceMessage fatal () const
 Flot pour un message d'erreur fatale.
 
TraceMessage pfatal () const
 Flot pour un message d'erreur fatale en parallèle.
 
TraceMessageDbg debug (Trace::eDebugLevel=Trace::Medium) const
 Flot pour un message de debug.
 
Trace::eDebugLevel configDbgLevel () const
 Niveau debug du fichier de configuration.
 
TraceMessage info (Int32 verbose_level) const
 Flot pour un message d'information d'un niveau donné
 
TraceMessage linfo () const
 Flot pour un message d'information avec le niveau d'information local à cette instance.
 
TraceMessage linfo (Int32 relative_level) const
 Flot pour un message d'information avec le niveau d'information local à cette instance.
 
void fatalMessage (const StandaloneTraceMessage &o) const
 

Types privés

using ProcInfoMap = std::map<unw_word_t,ProcInfo>
 

Fonctions membres privées

ProcInfo _getFuncInfo (unw_word_t ip, unw_cursor_t *cursor)
 
ProcInfo _getFuncInfo (const void *ip)
 Récupère le nom de la fonction via dladdr.
 
String _getGDBStack ()
 
StackTrace _backtraceStackTrace (const FixedStackFrameArray &stack_frames)
 Pile d'appel via la fonction backtrace.
 
String _generateFileAndOffset (const FixedStackFrameArray &stack_frames)
 Génère liste des noms de fichier et offset d'une pile d'appel.
 
FixedStackFrameArray _backtraceStackFrame (int first_function)
 Pile d'appel via la fonction backtrace.
 

Attributs privés

ProcInfoMap m_proc_name_map
 
std::mutex m_proc_name_map_mutex
 
bool m_want_gdb_info = false
 
bool m_use_backtrace = false
 
DWHandler m_dw_handler
 

Membres hérités additionnels

- Fonctions membres protégées hérités de Arcane::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
 
Int32 _localVerboseLevel () const
 

Description détaillée

Service de trace des appels de fonctions utilisant la libunwind.

Définition à la ligne 177 du fichier LibUnwindStackTraceService.cc.

Documentation des définitions de type membres

◆ ProcInfoMap

using Arcane::LibUnwindStackTraceService::ProcInfoMap = std::map<unw_word_t,ProcInfo>
private

Définition à la ligne 242 du fichier LibUnwindStackTraceService.cc.

Documentation des constructeurs et destructeur

◆ LibUnwindStackTraceService() [1/2]

Arcane::LibUnwindStackTraceService::LibUnwindStackTraceService ( const ServiceBuildInfo & sbi)
inlineexplicit

Définition à la ligne 215 du fichier LibUnwindStackTraceService.cc.

◆ LibUnwindStackTraceService() [2/2]

Arcane::LibUnwindStackTraceService::LibUnwindStackTraceService ( ITraceMng * tm)
inlineexplicit

Définition à la ligne 219 du fichier LibUnwindStackTraceService.cc.

Documentation des fonctions membres

◆ _backtraceStackFrame()

FixedStackFrameArray Arcane::LibUnwindStackTraceService::_backtraceStackFrame ( int first_function)
private

Pile d'appel via la fonction backtrace.

Définition à la ligne 486 du fichier LibUnwindStackTraceService.cc.

Références Arcane::FixedStackFrameArray::addFrame().

Référencé par stackTrace().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ _backtraceStackTrace()

StackTrace Arcane::LibUnwindStackTraceService::_backtraceStackTrace ( const FixedStackFrameArray & stack_frames)
private

Pile d'appel via la fonction backtrace.

Définition à la ligne 503 du fichier LibUnwindStackTraceService.cc.

Références Arcane::TraceAccessor::pinfo().

Référencé par stackTrace().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ _generateFileAndOffset()

String Arcane::LibUnwindStackTraceService::_generateFileAndOffset ( const FixedStackFrameArray & stack_frames)
private

Génère liste des noms de fichier et offset d'une pile d'appel.

Génère une chaîne de caractère contenant pour chaque adresse de la pile d'appel stack_frames le nom du fichier contenant le symbol et l'offset de cette adresse dans ce fichier.

Le format de sortie permet la lecture par des outils tels que addr2line ou llmv-symbolizer.

Définition à la ligne 537 du fichier LibUnwindStackTraceService.cc.

Références Arcane::TraceAccessor::pinfo().

Référencé par stackTrace().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ _getFuncInfo() [1/2]

LibUnwindStackTraceService::ProcInfo Arcane::LibUnwindStackTraceService::_getFuncInfo ( const void * addr)
private

Récupère le nom de la fonction via dladdr.

A faire
: rendre thread-safe

Définition à la ligne 315 du fichier LibUnwindStackTraceService.cc.

Références Arcane::LibUnwindStackTraceService::ProcInfo::m_name.

◆ _getFuncInfo() [2/2]

LibUnwindStackTraceService::ProcInfo Arcane::LibUnwindStackTraceService::_getFuncInfo ( unw_word_t ip,
unw_cursor_t * cursor )
private

Définition à la ligne 260 du fichier LibUnwindStackTraceService.cc.

◆ _getGDBStack()

String Arcane::LibUnwindStackTraceService::_getGDBStack ( )
private

Définition à la ligne 356 du fichier LibUnwindStackTraceService.cc.

◆ build()

void Arcane::LibUnwindStackTraceService::build ( void )
inlineoverridevirtual

Implémente Arcane::IStackTraceService.

Définition à la ligne 226 du fichier LibUnwindStackTraceService.cc.

◆ stackTrace()

StackTrace Arcane::LibUnwindStackTraceService::stackTrace ( int first_function)
overridevirtual

Chaîne de caractère indiquant la pile d'appel.

Implémente Arcane::IStackTraceService.

Définition à la ligne 379 du fichier LibUnwindStackTraceService.cc.

Références _backtraceStackFrame(), _backtraceStackTrace(), _generateFileAndOffset(), Arcane::FixedStackFrameArray::addFrame(), Arcane::platform::getSymbolizerService(), Arcane::LibUnwindStackTraceService::ProcInfo::m_name, et Arcane::ISymbolizerService::stackTrace().

+ Voici le graphe d'appel pour cette fonction :

◆ stackTraceFunction()

StackTrace Arcane::LibUnwindStackTraceService::stackTraceFunction ( int function_index)
overridevirtual

Retourne la pile à d'appel actuelle.

Les function_index premières fonctions de la pile sont ignorées.

Implémente Arcane::IStackTraceService.

Définition à la ligne 452 du fichier LibUnwindStackTraceService.cc.

Références Arcane::LibUnwindStackTraceService::ProcInfo::m_name, et Arcane::StringBuilder::toString().

+ Voici le graphe d'appel pour cette fonction :

Documentation des données membres

◆ m_dw_handler

DWHandler Arcane::LibUnwindStackTraceService::m_dw_handler
private

Définition à la ligne 248 du fichier LibUnwindStackTraceService.cc.

◆ m_proc_name_map

ProcInfoMap Arcane::LibUnwindStackTraceService::m_proc_name_map
private

Définition à la ligne 243 du fichier LibUnwindStackTraceService.cc.

◆ m_proc_name_map_mutex

std::mutex Arcane::LibUnwindStackTraceService::m_proc_name_map_mutex
private

Définition à la ligne 244 du fichier LibUnwindStackTraceService.cc.

◆ m_use_backtrace

bool Arcane::LibUnwindStackTraceService::m_use_backtrace = false
private

Définition à la ligne 247 du fichier LibUnwindStackTraceService.cc.

◆ m_want_gdb_info

bool Arcane::LibUnwindStackTraceService::m_want_gdb_info = false
private

Définition à la ligne 246 du fichier LibUnwindStackTraceService.cc.


La documentation de cette classe a été générée à partir du fichier suivant :