mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-03 21:44:33 +00:00 
			
		
		
		
	demangle moves to logging
This commit is contained in:
		
							
								
								
									
										15
									
								
								lib/Log.cc
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								lib/Log.cc
									
									
									
									
									
								
							@@ -31,8 +31,23 @@ directory
 | 
				
			|||||||
/*  END LEGAL */
 | 
					/*  END LEGAL */
 | 
				
			||||||
#include <Grid.h>
 | 
					#include <Grid.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <cxxabi.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace Grid {
 | 
					namespace Grid {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  std::string demangle(const char* name) {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    int status = -4; // some arbitrary value to eliminate the compiler warning
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    // enable c++11 by passing the flag -std=c++11 to g++
 | 
				
			||||||
 | 
					    std::unique_ptr<char, void(*)(void*)> res {
 | 
				
			||||||
 | 
					      abi::__cxa_demangle(name, NULL, NULL, &status),
 | 
				
			||||||
 | 
						std::free
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    return (status==0) ? res.get() : name ;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
GridStopWatch Logger::StopWatch;
 | 
					GridStopWatch Logger::StopWatch;
 | 
				
			||||||
std::ostream Logger::devnull(0);
 | 
					std::ostream Logger::devnull(0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -143,6 +143,7 @@ extern GridLogger GridLogIterative  ;
 | 
				
			|||||||
extern GridLogger GridLogIntegrator  ;
 | 
					extern GridLogger GridLogIntegrator  ;
 | 
				
			||||||
extern Colours    GridLogColours;
 | 
					extern Colours    GridLogColours;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 std::string demangle(const char* name) ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define _NBACKTRACE (256)
 | 
					#define _NBACKTRACE (256)
 | 
				
			||||||
extern void * Grid_backtrace_buffer[_NBACKTRACE];
 | 
					extern void * Grid_backtrace_buffer[_NBACKTRACE];
 | 
				
			||||||
@@ -161,7 +162,7 @@ std::fclose(fp);	    \
 | 
				
			|||||||
int symbols    = backtrace        (Grid_backtrace_buffer,_NBACKTRACE);\
 | 
					int symbols    = backtrace        (Grid_backtrace_buffer,_NBACKTRACE);\
 | 
				
			||||||
char **strings = backtrace_symbols(Grid_backtrace_buffer,symbols);\
 | 
					char **strings = backtrace_symbols(Grid_backtrace_buffer,symbols);\
 | 
				
			||||||
for (int i = 0; i < symbols; i++){\
 | 
					for (int i = 0; i < symbols; i++){\
 | 
				
			||||||
  std::fprintf (fp,"BackTrace Strings: %d %s\n",i, strings[i]); std::fflush(fp); \
 | 
					  std::fprintf (fp,"BackTrace Strings: %d %s\n",i, demangle(strings[i]).c_str()); std::fflush(fp); \
 | 
				
			||||||
}\
 | 
					}\
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else 
 | 
					#else 
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user