Debuggers conform to the interface:

type Debugger interface {

	/// Attach a debugger to pid and return the a debug server object
	Attach(pid int) (DebugServer, error)

Where DebugServer consists of the following:

type DebugServer interface {
	/// Detach from the process we are debugging (allowing it to resume normal execution).
	Detach() error
	///  Return the port that the debug server listens on.
	Port() int

To add debugger support to squash, implement the functions above and add it to the squash client.

func getDebugger(dbgtype string) debuggers.Debugger {

	var g gdb.GdbInterface
	var d dlv.DLV

	switch dbgtype {
	case "dlv":
		return &d
	case "gdb":
		return &g
		return nil