add --debug-goroutines

This commit is contained in:
2026-07-13 14:04:51 +02:00
parent a69262ba24
commit 29d24a112f
3 changed files with 41 additions and 17 deletions

View File

@@ -119,6 +119,12 @@ func Main() int {
Usage: "enable HTTP debugging", Usage: "enable HTTP debugging",
Destination: &conf.DebugHTTP, Destination: &conf.DebugHTTP,
}, },
&cli.BoolFlag{
Name: "debug-goroutines",
Value: false,
Usage: "enable goroutine debugging",
Destination: &conf.DebugGoRoutines,
},
&cli.BoolFlag{ &cli.BoolFlag{
Name: "align-ints", Name: "align-ints",
Aliases: []string{"I"}, Aliases: []string{"I"},

View File

@@ -89,12 +89,13 @@ type Config struct {
Force bool // ccr follower renew: -f Force bool // ccr follower renew: -f
DebugHTTP bool // root: --debug-http DebugHTTP bool // root: --debug-http
Separator string // role diff: -s DebugGoRoutines bool // root: --debug-goroutines
NotDeployed bool // role diff: -n Separator string // role diff: -s
Undefined bool // role diff: -u NotDeployed bool // role diff: -n
Diff bool // role diff: -D Undefined bool // role diff: -u
Hidden bool // ds ls: -H Diff bool // role diff: -D
Hidden bool // ds ls: -H
// rollover // rollover
MaxAge string MaxAge string

View File

@@ -35,15 +35,20 @@ type Table struct {
RawHeaders []string RawHeaders []string
Entries [][]any Entries [][]any
rows [][]string // representation used for printing rows [][]string // representation used for printing
processed bool processed bool
lenHeaders []int lenHeaders []int
alignInts bool alignInts bool
maxwidth int maxwidth int
debugGoRoutines bool
} }
func NewTable(conf *cfg.Config, columns, rows int) *Table { func NewTable(conf *cfg.Config, columns, rows int) *Table {
table := new(Table{Mode: conf.Output, maxwidth: cfg.GetTermWidth()}) table := new(Table{
Mode: conf.Output,
maxwidth: cfg.GetTermWidth(),
debugGoRoutines: conf.DebugGoRoutines,
})
table.Headers = make([]string, columns) table.Headers = make([]string, columns)
table.RawHeaders = make([]string, columns) table.RawHeaders = make([]string, columns)
@@ -55,7 +60,11 @@ func NewTable(conf *cfg.Config, columns, rows int) *Table {
} }
func NewTableEmpty(conf *cfg.Config) *Table { func NewTableEmpty(conf *cfg.Config) *Table {
table := new(Table{Mode: conf.Output, maxwidth: cfg.GetTermWidth()}) table := new(Table{
Mode: conf.Output,
maxwidth: cfg.GetTermWidth(),
debugGoRoutines: conf.DebugGoRoutines,
})
table.alignInts = conf.AlignInts table.alignInts = conf.AlignInts
return table return table
@@ -75,16 +84,24 @@ func (table *Table) WithHeaders(headers ...string) *Table {
} }
func (table *Table) Print() error { func (table *Table) Print() error {
var err error
switch table.Mode { switch table.Mode {
case "json": case "json":
return table.PrintJSON() err = table.PrintJSON()
case "yaml": case "yaml":
return table.PrintYAML() err = table.PrintYAML()
case "csv": case "csv":
return table.PrintCSV() err = table.PrintCSV()
default: default:
return table.PrintTSV() err = table.PrintTSV()
} }
if table.debugGoRoutines {
printGoRoutineMetrics()
}
return err
} }
var ( var (