github.com/searKing/golang/go@v1.2.74/runtime/cgosymbolizer/symbolizer.go (about) 1 // Copyright 2021 The searKing Author. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Package cgosymbolizer provides a cgo symbolizer based on libbacktrace. 6 // This will be used to provide a symbolic backtrace of cgo functions. 7 // This package does not export any symbols. 8 // To use it on all platforms, add a line like 9 // import _ "github.com/searKing/golang/go/runtime/cgosymbolizer" 10 // go build main.go 11 // Advance Usage can be set by go build tags: 12 // BOOST_STACKTRACE_USE_WINDBG 13 // BOOST_STACKTRACE_USE_WINDBG_CACHED 14 // BOOST_STACKTRACE_USE_BACKTRACE 15 // BOOST_STACKTRACE_USE_ADDR2LINE 16 // BOOST_STACKTRACE_USE_NOOP 17 // all tags defined in https://www.boost.org/doc/libs/develop/doc/html/stacktrace/configuration_and_build.html 18 // go build -tags BOOST_STACKTRACE_USE_BACKTRACE main.go 19 // somewhere in your program. 20 // for linux only, you can use `cgosymbolizer` by ianlancetaylor instead. 21 // import _ "github.com/ianlancetaylor/cgosymbolizer" 22 package cgosymbolizer 23 24 // extern void cgoTraceback(void*); 25 // extern void cgoSymbolizer(void*); 26 import "C" 27 28 import ( 29 "runtime" 30 "unsafe" 31 ) 32 33 func init() { 34 runtime.SetCgoTraceback(0, unsafe.Pointer(C.cgoTraceback), nil, unsafe.Pointer(C.cgoSymbolizer)) 35 } 36 37 //// PreviousStacktrace returns a human readable stacktrace 38 //func PreviousStacktrace() string { 39 // stacktraceChars := C.CGO_PreviousStacktrace() 40 // defer C.free(unsafe.Pointer(stacktraceChars)) 41 // return C.GoString(stacktraceChars) 42 //}