1. 09 11月, 2018 1 次提交
  2. 12 10月, 2018 1 次提交
    • A
      proc: support position independent executables (PIE) · 74c98bc9
      aarzilli 提交于
      Support for position independent executables (PIE) on the native linux
      backend, the gdbserver backend on linux and the core backend.
      Also implemented in the windows native backend, but it can't be tested
      because go doesn't support PIE on windows yet.
      74c98bc9
  3. 03 10月, 2018 1 次提交
    • A
      proc/native,Makefile: allow compiling on macOS without native backend · 910f90c3
      aarzilli 提交于
      On macOS 10.14 Apple changed the command line tools so that system
      headers now need to be manually installed.
      
      Instead of adding one extra install step to the install procedure add a
      build tag to allow compilation of delve without the native backend on
      macOS. By default (i.e. when using `go get`) this is how delve will be
      compiled on macOS, the make script is changed to enable compiling the
      native backend if the required dependencies have been installed.
      
      Insure that both configuration still build correctly on Travis CI and
      change the documentation to describe how to compile the native backend
      and that it isn't normally needed.
      
      Fixes #1359
      910f90c3
  4. 20 9月, 2018 1 次提交
  5. 12 6月, 2018 1 次提交
    • A
      proc,service: display return values when stepping out of a function · 60c58acb
      aarzilli 提交于
      Displays the return values of the current function when we step out of
      it after executing a step, next or stepout command.
      
      Implementation of this feature is tricky: when the function has
      returned the return variables are not in scope anymore. Implementing
      this feature requires evaluating variables that are out of scope, using
      a stack frame that doesn't exist anymore.
      
      We can't calculate the address of these variables when the
      next/step/stepout command is initiated either, because between that
      point and the time where the stepout breakpoint is actually hit the
      goroutine stack could grow and be moved to a different memory address.
      60c58acb
  6. 19 5月, 2018 1 次提交
    • A
      proc/native,proc/gdbserial: let target access terminal · cc86bde5
      aarzilli 提交于
      Change the linux verison of proc/native and proc/gdbserial (with
      debugserver) so that they let the target process use the terminal when
      delve is launched in headless mode.
      
      Windows already worked, proc/gdbserial (with rr) already worked.
      I couldn't find a way to make proc/gdbserial (with lldb-server) work.
      
      No tests are added because I can't think of a way to test for
      foregroundness of a process.
      
      Fixes #65
      cc86bde5
  7. 07 3月, 2018 4 次提交
  8. 08 2月, 2018 1 次提交
    • M
      proc: Handle race between fork and task_for_pid (#1117) · beb3e76f
      Matt Bauer 提交于
      * Handle race between fork and task_for_pid
      
      On macOS a call to fork and a subsequent call to task_for_pid will race each other. This is because the macOS kernel assigns a new proc_t structure early but the new task, thread and uthread come much later. The function exec_mach_imgact in the XNU sources contains this logic.
      
      In a system under load or one with delays in fork processing (i.e. various security software), task_for_pid as currently called by Delve often returns the parent task. This can be seen by printing out the task number around line 86. In a normal system we would see three calls:
      
      -> ~/go/bin/dlv --listen=localhost:59115 --headless=true --api-version=2 --backend=native exec ./___main_go -- 
      Task: 9731
      Task: 9731
      Task: 9731
      API server listening at: 127.0.0.1:59115
      
      This is the result on a system where the race is lost:
      
      -> ~/go/bin/dlv --listen=localhost:59115 --headless=true --api-version=2 --backend=native exec ./___main_go -- 
      Task: 8707
      Task: 10499
      Task: 10499
      could not launch process: could not get thread count
      
      In this latter case, task 8707 is the parent task. The child task of 10499 was desired and hence the error.
      
      This code change checks to make sure the returned task is not that of the parent. If it is, it retries. It's possible other macOS reported Delve issues are the result of this failed race.
      
      * proc: correct formatting
      beb3e76f
  9. 21 11月, 2017 1 次提交
    • A
      proc: next should not skip lines with conditional bps · 1ced7c3a
      aarzilli 提交于
      Conditional breakpoints with unmet conditions would cause next and step
      to skip the line.
      
      This breakpoint changes the Kind field of proc.Breakpoint from a single
      value to a bit field, each breakpoint object can represent
      simultaneously a user breakpoint and one internal breakpoint (of which
      we have several different kinds).
      
      The breakpoint condition for internal breakpoints is stored in the new
      internalCond field of proc.Breakpoint so that it will not conflict with
      user specified conditions.
      
      The breakpoint setting code is changed to allow overlapping one
      internal breakpoint on a user breakpoint, or a user breakpoint on an
      existing internal breakpoint. All other combinations are rejected. The
      breakpoint clearing code is changed to clear the UserBreakpoint bit and
      only remove the phisical breakpoint if no other bits are set in the
      Kind field. ClearInternalBreakpoints does the same thing but clearing
      all bits that aren't the UserBreakpoint bit.
      
      Fixes #844
      1ced7c3a
  10. 31 8月, 2017 1 次提交
  11. 30 6月, 2017 1 次提交
  12. 13 6月, 2017 1 次提交
  13. 06 5月, 2017 1 次提交
  14. 22 4月, 2017 1 次提交
  15. 07 4月, 2017 1 次提交
    • A
      proc refactor: split out BinaryInfo implementation (#745) · 436a3c21
      Alessandro Arzilli 提交于
      * proc: refactor BinaryInfo part of proc.Process to own type
      
      The data structures and associated code used by proc.Process
      to implement target.BinaryInfo will also be useful to support a
      backend for examining core dumps, split this part of proc.Process
      to a different type.
      
      * proc: compile support for all executable formats unconditionally
      
      So far we only compiled in support for loading the executable format
      supported by the host operating system.
      Once support for core files is introduced it is however useful to
      support loading in all executable formats, there is no reason why it
      shouldn't be possible to examine a linux coredump on windows, or
      viceversa.
      
      * proc: bugfix: do not resume threads on detach if killing
      
      * Replace BinaryInfo interface with BinInfo() method returning proc.BinaryInfo
      436a3c21
  16. 29 3月, 2017 1 次提交
    • A
      proc: add test for attach/detach, fix detach (#773) · 7b19fe9e
      Alessandro Arzilli 提交于
      Detach did not work for processes we attach to via PID.
      
      Linux: we were only detaching from the main thread, all threads are
      detached independently
      
      Windows: we must resume all threads before detaching.
      
      macOS: still broken.
      
      Updates #772
      7b19fe9e
  17. 14 2月, 2017 1 次提交
  18. 09 2月, 2017 3 次提交
  19. 23 12月, 2016 1 次提交
  20. 17 12月, 2016 1 次提交
  21. 02 11月, 2016 1 次提交
    • E
      Flag to set working directory (#650) · 4064d6ac
      Evgeny L 提交于
      * proc: Add `wd` to Launch
      
      This change adds the `wd` arg which specify working directory of the
      program.
      
      Fixes #295
      
      * service/debugger: Add `Wd` field to debugger.Config
      
      This change adds the `Wd` field which specify working directory of the
      program launched by debugger.
      
      Fixes #295
      
      * service: Add `Wd` to service.Config
      
      This change adds the `Wd` field which specify working directory of the
      program debugger will launch.
      
      Fixes #295
      
      * cmd/dlv: Add `Wd` flag
      
      This change adds `Wd` flag which specify working directory of the
      program which launched by debugger.
      
      Fixes #295
      
      * only set the Linux working directory if it is set,
      stub out param in darwin and windows
      
      * set working directory for Windows
      https://godoc.org/golang.org/x/sys/windows#CreateProcess
      https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx
      
      * Windows workingDir must be an *uint16
      
      * attempt to chdir on darwin via @yuntan
      
      * proc/exec_darwin.c: fix working directory for darwin
      
      * Add tests to check if working directory works.
      * Fix darwin implementation of fork/exec, which paniced if
        child fork returned.
      
      * cmd, service: rename Wd to WorkingDir
      4064d6ac
  22. 06 7月, 2016 1 次提交
  23. 30 6月, 2016 1 次提交
    • A
      proc: detect when Launching non-executable files · 51c39ed1
      aarzilli 提交于
      This provides a better error message when the user tries to run dlv
      debug on a directory that does not contain a main package, when `dlv
      exec` is used with a source file.
      
      Additionally the architecture of the executable is checked as suggested
      by @alexbrainman in #443.
      
      Fixes #509
      51c39ed1
  24. 30 5月, 2016 1 次提交
    • A
      Go 1.7 compatibility (#524) · 9bc6ad4f
      Alessandro Arzilli 提交于
      * tests: update to cope with go1.7 SSA compiler
      
      * de-vendored golang.org/x/debug/dwarf
      
      We need our own tweaked version
      
      * dwarf/debug/dwarf: always use the entry's name attribute
      
      Using the name attribute leads to better type names as well as fixes
      inconsistencies between 1.5, 1.6 and 1.7.
      
      * proc: Updated loadInterface to work with go1.7
      
      go1.7 changed the internal representation of types, removing the string
      field from runtime._type.
      Updated loadInterface to use the new str field.
      9bc6ad4f
  25. 13 4月, 2016 1 次提交
  26. 25 1月, 2016 4 次提交
  27. 21 1月, 2016 1 次提交
  28. 10 1月, 2016 2 次提交
  29. 09 1月, 2016 3 次提交