diff options
author | quantimnot <54247259+quantimnot@users.noreply.github.com> | 2022-06-10 14:40:08 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-10 20:40:08 +0200 |
commit | 6f4bacff67e2e219ef914e24d9f9aaf34a6d1eb1 (patch) | |
tree | a77b7708c6405f672dc7d105bc60cd0bf0f185a5 /tools/compiler.lldb | |
parent | 1e5dd9022b0d86d63d616431a0f9959ca4c10f40 (diff) | |
download | Nim-6f4bacff67e2e219ef914e24d9f9aaf34a6d1eb1.tar.gz |
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>
Diffstat (limited to 'tools/compiler.lldb')
-rw-r--r-- | tools/compiler.lldb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tools/compiler.lldb b/tools/compiler.lldb new file mode 100644 index 000000000..e0b375055 --- /dev/null +++ b/tools/compiler.lldb @@ -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 |