Skip to content

Commit

Permalink
Fix paths handling for gdb (#597)
Browse files Browse the repository at this point in the history
* When running debugger always use forward slash in paths

* Add more debugging output when running debugger commandline

* Temporary fix for arduino.samd core 1.8.5

* Fix gdb timeout on Windows

(cherry picked from commit 561618a)
  • Loading branch information
cmaglie authored and rsora committed Feb 26, 2020
1 parent f0b72bd commit e4d02b4
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions commands/debug/debug.go
Expand Up @@ -51,7 +51,19 @@ func Debug(ctx context.Context, req *dbg.DebugConfigReq, inStream io.Reader, out
return nil, errors.Wrap(err, "Cannot get command line for tool")
}

// Transform every path to forward slashes (on Windows some tools further
// escapes the command line so the backslash "\" gets in the way).
for i, param := range commandLine {
commandLine[i] = filepath.ToSlash(param)
}

// Run Tool
entry := logrus.NewEntry(logrus.StandardLogger())
for i, param := range commandLine {
entry = entry.WithField(fmt.Sprintf("param%d", i), param)
}
entry.Debug("Executing debugger")

cmd, err := executils.Command(commandLine)
if err != nil {
return nil, errors.Wrap(err, "Cannot execute debug tool")
Expand Down Expand Up @@ -224,6 +236,10 @@ func getCommandLine(req *dbg.DebugConfigReq, pm *packagemanager.PackageManager)

// Build recipe for tool
recipe := toolProperties.Get("debug.pattern")
// REMOVEME: hotfix for samd core 1.8.5
if recipe == `"{path}/{cmd}" --interpreter=mi2 -ex "set pagination off" -ex 'target extended-remote | {tools.openocd.path}/{tools.openocd.cmd} -s "{tools.openocd.path}/share/openocd/scripts/" --file "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "gdb_port pipe" -c "telnet_port 0"' {build.path}/{build.project_name}.elf` {
recipe = `"{path}/{cmd}" --interpreter=mi2 -ex "set remotetimeout 5" -ex "set pagination off" -ex 'target extended-remote | "{tools.openocd.path}/{tools.openocd.cmd}" -s "{tools.openocd.path}/share/openocd/scripts/" --file "{runtime.platform.path}/variants/{build.variant}/{build.openocdscript}" -c "gdb_port pipe" -c "telnet_port 0"' "{build.path}/{build.project_name}.elf"`
}
cmdLine := toolProperties.ExpandPropsInString(recipe)
cmdArgs, err := properties.SplitQuotedString(cmdLine, `"'`, false)
if err != nil {
Expand Down

0 comments on commit e4d02b4

Please sign in to comment.