aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorJouni Hogander <jouni.hogander@unikie.com>2020-11-22 15:07:30 +0200
committerDmitry Vyukov <dvyukov@google.com>2020-12-10 12:57:35 +0100
commitf86bec81e1bafa82d30486258de616fff295b5f7 (patch)
treec9b62a9a97c71309bcf374b296406a0548cbed03 /pkg
parent1e5dae00dd24789a7087d6ffd4fcb5c6951af6b1 (diff)
debug/debugtracer: add new component debugtracer
DebugTracer can be used for tracing and saving files for debugging purposes.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/debugtracer/debug.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/pkg/debugtracer/debug.go b/pkg/debugtracer/debug.go
new file mode 100644
index 000000000..99a95fd83
--- /dev/null
+++ b/pkg/debugtracer/debug.go
@@ -0,0 +1,58 @@
+// Copyright 2020 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package debugtracer
+
+import (
+ "fmt"
+ "io"
+ "path/filepath"
+ "testing"
+
+ "github.com/google/syzkaller/pkg/osutil"
+)
+
+type DebugTracer interface {
+ Log(msg string, args ...interface{})
+ SaveFile(filename string, data []byte)
+}
+
+type GenericTracer struct {
+ TraceWriter io.Writer
+ OutDir string
+}
+
+type TestTracer struct {
+ T *testing.T
+}
+
+type NullTracer struct {
+}
+
+func (gt *GenericTracer) Log(msg string, args ...interface{}) {
+ fmt.Fprintf(gt.TraceWriter, msg+"\n", args...)
+}
+
+func (gt *GenericTracer) SaveFile(filename string, data []byte) {
+ if gt.OutDir == "" {
+ return
+ }
+ osutil.MkdirAll(gt.OutDir)
+ osutil.WriteFile(filepath.Join(gt.OutDir, filename), data)
+}
+
+func (tt *TestTracer) Log(msg string, args ...interface{}) {
+ tt.T.Log(msg, args)
+}
+
+func (tt *TestTracer) SaveFile(filename string, data []byte) {
+ // Not implemented.
+}
+
+func (nt *NullTracer) Log(msg string, args ...interface{}) {
+ // Not implemented.
+}
+
+func (nt *NullTracer) SaveFile(filename string, data []byte) {
+ // Not implemented.
+}