delve/pkg/proc/variable_test.go
Alessandro Arzilli 37e44bf603
proc,proc/native: adds ability to automatically debug child processes (#3165)
Adds the ability to automatically debug child processes executed by the
target to the linux native backend.
This commit does not contain user interface or API to access this
functionality.

Updates #2551
2023-02-22 09:26:28 -08:00

45 lines
1.3 KiB
Go

package proc_test
import (
"path/filepath"
"testing"
"github.com/go-delve/delve/pkg/proc"
protest "github.com/go-delve/delve/pkg/proc/test"
)
func TestGoroutineCreationLocation(t *testing.T) {
protest.AllowRecording(t)
withTestProcess("goroutinestackprog", t, func(p *proc.Target, grp *proc.TargetGroup, fixture protest.Fixture) {
bp := setFunctionBreakpoint(p, t, "main.agoroutine")
assertNoError(grp.Continue(), t, "Continue()")
gs, _, err := proc.GoroutinesInfo(p, 0, 0)
assertNoError(err, t, "GoroutinesInfo")
for _, g := range gs {
currentLocation := g.UserCurrent()
currentFn := currentLocation.Fn
if currentFn != nil && currentFn.BaseName() == "agoroutine" {
createdLocation := g.Go()
if createdLocation.Fn == nil {
t.Fatalf("goroutine creation function is nil")
}
if createdLocation.Fn.BaseName() != "main" {
t.Fatalf("goroutine creation function has wrong name: %s", createdLocation.Fn.BaseName())
}
if filepath.Base(createdLocation.File) != "goroutinestackprog.go" {
t.Fatalf("goroutine creation file incorrect: %s", filepath.Base(createdLocation.File))
}
if createdLocation.Line != 23 {
t.Fatalf("goroutine creation line incorrect: %v", createdLocation.Line)
}
}
}
p.ClearBreakpoint(bp.Addr)
grp.Continue()
})
}