mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-18 16:26:38 +00:00
Add stack trace for bundle (#4957)
This commit is contained in:
@@ -56,6 +56,7 @@ block.prof: Block profiling information.
|
|||||||
heap.prof: Heap profiling information (snapshot of memory allocations).
|
heap.prof: Heap profiling information (snapshot of memory allocations).
|
||||||
allocs.prof: Allocations profiling information.
|
allocs.prof: Allocations profiling information.
|
||||||
threadcreate.prof: Thread creation profiling information.
|
threadcreate.prof: Thread creation profiling information.
|
||||||
|
stack_trace.txt: Complete stack traces of all goroutines at the time of bundle creation.
|
||||||
|
|
||||||
|
|
||||||
Anonymization Process
|
Anonymization Process
|
||||||
@@ -109,6 +110,9 @@ go tool pprof -http=:8088 heap.prof
|
|||||||
|
|
||||||
This will open a web browser tab with the profiling information.
|
This will open a web browser tab with the profiling information.
|
||||||
|
|
||||||
|
Stack Trace
|
||||||
|
The stack_trace.txt file contains a complete snapshot of all goroutine stack traces at the time the debug bundle was created.
|
||||||
|
|
||||||
Routes
|
Routes
|
||||||
The routes.txt file contains detailed routing table information in a tabular format:
|
The routes.txt file contains detailed routing table information in a tabular format:
|
||||||
|
|
||||||
@@ -327,6 +331,10 @@ func (g *BundleGenerator) createArchive() error {
|
|||||||
log.Errorf("failed to add profiles to debug bundle: %v", err)
|
log.Errorf("failed to add profiles to debug bundle: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := g.addStackTrace(); err != nil {
|
||||||
|
log.Errorf("failed to add stack trace to debug bundle: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
if err := g.addSyncResponse(); err != nil {
|
if err := g.addSyncResponse(); err != nil {
|
||||||
return fmt.Errorf("add sync response: %w", err)
|
return fmt.Errorf("add sync response: %w", err)
|
||||||
}
|
}
|
||||||
@@ -522,6 +530,18 @@ func (g *BundleGenerator) addProf() (err error) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *BundleGenerator) addStackTrace() error {
|
||||||
|
buf := make([]byte, 5242880) // 5 MB buffer
|
||||||
|
n := runtime.Stack(buf, true)
|
||||||
|
|
||||||
|
stackTrace := bytes.NewReader(buf[:n])
|
||||||
|
if err := g.addFileToZip(stackTrace, "stack_trace.txt"); err != nil {
|
||||||
|
return fmt.Errorf("add stack trace file to zip: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (g *BundleGenerator) addInterfaces() error {
|
func (g *BundleGenerator) addInterfaces() error {
|
||||||
interfaces, err := net.Interfaces()
|
interfaces, err := net.Interfaces()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user