github.com/consensys/gnark@v0.11.0/constraint/debug_info.go (about) 1 package constraint 2 3 import ( 4 "strings" 5 6 "github.com/consensys/gnark/internal/utils" 7 ) 8 9 type DebugInfo LogEntry 10 11 func (system *System) NewDebugInfo(errName string, i ...interface{}) DebugInfo { 12 var l LogEntry 13 14 const minLogSize = 500 15 var sbb strings.Builder 16 sbb.Grow(minLogSize) 17 sbb.WriteString("[") 18 sbb.WriteString(errName) 19 sbb.WriteString("] ") 20 21 for _, _i := range i { 22 switch v := _i.(type) { 23 case LinearExpression: 24 l.WriteVariable(v, &sbb) 25 case string: 26 sbb.WriteString(v) 27 case Term: 28 l.WriteVariable(LinearExpression{v}, &sbb) 29 default: 30 _v := utils.FromInterface(v) 31 sbb.WriteString(_v.String()) 32 } 33 } 34 sbb.WriteByte('\n') 35 sbb.WriteString("%s\n") // some space for the stack. 36 l.Format = sbb.String() 37 38 // get the stack 39 l.Stack = system.SymbolTable.CollectStack() 40 41 return DebugInfo(l) 42 }