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

39
tools/compiler.gdb Normal file
View file

@ -0,0 +1,39 @@
# create a breakpoint on `debugutils.enteringDebugSection`
define enable_enteringDebugSection
break -function enteringDebugSection
# run these commands once breakpoint enteringDebugSection is hit
command
# enable all breakpoints and watchpoints
enable
# continue execution
cont
end
end
# create a breakpoint on `debugutils.exitingDebugSection` named exitingDebugSection
define enable_exitingDebugSection
break -function exitingDebugSection
# run these commands once breakpoint exitingDebugSection is hit
command
# disable all breakpoints and watchpoints
disable
# but enable the enteringDebugSection breakpoint
enable_enteringDebugSection
# continue execution
cont
end
end
# some commands can't be set until the process is running, so set an entry breakpoint
break -function NimMain
# run these commands once breakpoint NimMain is hit
command
# disable all breakpoints and watchpoints
disable
# but enable the enteringDebugSection breakpoint
enable_enteringDebugSection
# no longer need this breakpoint
delete -function NimMain
# continue execution
cont
end