Extend and document compiler debugging utilities (#19841)

* Add two debugutils procs that native debuggers can break on use to
  execute commands when code of interest is being compiled.
* Add GDB and LLDB programs to disable and enable breakpoints and
  watchpoints when code of interest is being compiled.
* Extend the `intern.rst` docs regarding debugging the compiler.

Co-authored-by: quantimnot <quantimnot@users.noreply.github.com>
This commit is contained in:
quantimnot 2022-06-10 14:40:08 -04:00 • committed by GitHub
commit 6f4bacff67
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 281 additions and 39 deletions

40
tools/compiler.lldb Normal file
View file

@ -0,0 +1,40 @@
# create a breakpoint on `debugutils.enteringDebugSection` named enteringDebugSection
breakpoint set -n 'enteringDebugSection' -N enteringDebugSection
# run these commands once breakpoint enteringDebugSection is hit
breakpoint command add enteringDebugSection
# enable all breakpoints
breakpoint enable
# enable all watchpoints
# watchpoint enable # FIXME: not currently working for unknown reason
# continue execution
continue
DONE
# create a breakpoint on `debugutils.exitingDebugSection` named exitingDebugSection
breakpoint set -n 'exitingDebugSection' -N exitingDebugSection
# run these commands once breakpoint exitingDebugSection is hit
breakpoint command add exitingDebugSection
# disable all breakpoints
breakpoint disable
# disable all watchpoints
# watchpoint disable # FIXME: not currently working for unknown reason
breakpoint enable enteringDebugSection
# continue execution
continue
DONE
# some commands can't be set until the process is running, so set an entry breakpoint
breakpoint set -n NimMain -N NimMain
# run these commands once breakpoint NimMain is hit
breakpoint command add NimMain
# disable all breakpoints
breakpoint disable
# disable all watchpoints
# watchpoint disable # FIXME: not currently working for unknown reason
# enable the enteringDebugSection breakpoint though
breakpoint enable enteringDebugSection
# no longer need this breakpoint
breakpoint delete NimMain
# continue execution
continue
DONE