go-delve/delve · error
could not open executable: %v
Error message
could not open executable: %v
What it means
Error "could not open executable: %v" thrown in go-delve/delve.
Source
Thrown at pkg/proc/linutil/dynamic.go:180
return readPtr(p, debugAddr+rBrkOffset)
}
// ElfFindRBrkFromInterp finds the address of the dynamic linker's
// _dl_debug_state function by reading the ELF interpreter from disk.
// This is used at launch time when the dynamic linker hasn't initialized
// r_debug yet (DT_DEBUG is 0). The function reads the .interp section of
// the executable to find the interpreter path, then finds _dl_debug_state
// in the interpreter's dynamic symbol table.
// execPath is the path to the executable, and auxvBase is the base address
// of the interpreter in memory (AT_BASE from the auxiliary vector).
func ElfFindRBrkFromInterp(execPath string, auxvBase uint64) (uint64, error) {
if auxvBase == 0 {
return 0, nil
}
execFile, err := elf.Open(execPath)
if err != nil {
return 0, fmt.Errorf("could not open executable: %v", err)
}
defer execFile.Close()
interpSec := execFile.Section(".interp")
if interpSec == nil {
return 0, nil
}
interpData, err := interpSec.Data()
if err != nil {
return 0, fmt.Errorf("could not read .interp section: %v", err)
}
interpPath := string(bytes.TrimRight(interpData, "\x00"))
interpFile, err := elf.Open(interpPath)
if err != nil {
realPath, rerr := os.Readlink(interpPath)
if rerr != nil {
return 0, fmt.Errorf("could not open interpreter %s: %v", interpPath, err)View on GitHub (pinned to a23773e6c3)
When it happens
Trigger: Thrown at pkg/proc/linutil/dynamic.go:180 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of go-delve/delve@a23773e6c3 (2026-08-31).
Data as JSON: /api/errors/eae8a2b1e78b67c1.
Report an issue: GitHub.