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  //}