
The repository is being switched from the personal account github.com/derekparker/delve to the organization account github.com/go-delve/delve. This patch updates imports and docs, while preserving things which should not be changed such as my name in the CHANGELOG and in TODO comments.
40 lines
1.0 KiB
Go
40 lines
1.0 KiB
Go
package proc_test
|
|
|
|
import (
|
|
"os"
|
|
"os/exec"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/go-delve/delve/pkg/proc/native"
|
|
protest "github.com/go-delve/delve/pkg/proc/test"
|
|
)
|
|
|
|
func TestLoadingExternalDebugInfo(t *testing.T) {
|
|
fixture := protest.BuildFixture("locationsprog", 0)
|
|
defer os.Remove(fixture.Path)
|
|
stripAndCopyDebugInfo(fixture, t)
|
|
p, err := native.Launch(append([]string{fixture.Path}, ""), "", false, []string{filepath.Dir(fixture.Path)})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
p.Detach(true)
|
|
}
|
|
|
|
func stripAndCopyDebugInfo(f protest.Fixture, t *testing.T) {
|
|
name := filepath.Base(f.Path)
|
|
// Copy the debug information to an external file.
|
|
copyCmd := exec.Command("objcopy", "--only-keep-debug", name, name+".debug")
|
|
copyCmd.Dir = filepath.Dir(f.Path)
|
|
if err := copyCmd.Run(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// Strip the original binary of the debug information.
|
|
stripCmd := exec.Command("strip", "--strip-debug", "--strip-unneeded", name)
|
|
stripCmd.Dir = filepath.Dir(f.Path)
|
|
if err := stripCmd.Run(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|