Nvim 的 :help 页面,生成 自 源代码 使用 tree-sitter-vimdoc 解析器。
ulimit -c unlimited
coredumpctl -1 gdb
coredumpctl 是一个可选工具,因此您可能需要安装它sudo apt install systemd-coredump
backtrace.txt 文件发送给我们2>&1 coredumpctl -1 gdb | tee -a backtrace.txt
(gdb) thread apply all bt full
coredumpctl 的系统上,您可能会发现当前目录或其他位置出现 core 转储文件。在安装了 apport 的 Linux 系统(例如 Ubuntu)上,核心转储文件保存的目录可以是 /var/lib/apport/coredump 或其他位置,具体取决于系统配置(参见 /proc/sys/kernel/core_pattern)。另请参阅:https://stackoverflow.com/a/18368068./core 转储文件中获取回溯gdb build/bin/nvim ./core 2>&1 | tee backtrace.txt
(gdb) thread apply all bt full
nvim 崩溃,您可以在 Console.app(在“崩溃报告”或“用户诊断报告”下,适用于较旧的 macOS 版本)中看到回溯。open -a Console
/cores/ 目录存在且可写sudo mkdir /cores
sudo chown root:admin /cores
sudo chmod 1775 /cores
unlimitedulimit -c unlimited
~/.bashrc 或类似文件)中。lldb 中打开核心文件lldb -c /cores/core.12345
/etc/launchd.conf 启用核心转储)。TEST_TAG 运行与已破坏标签匹配的测试(格式为 #foo,例如 it("test #foo ...", ...))GDB=1 TEST_TAG=foo make functionaltest
gdb build/bin/nvim
(gdb) target remote localhost:7777-- 请参阅 https://github.com/neovim/neovim/blob/master/test/functional/testnvim.lua 中的 nvim_argv。lldb .deps/usr/bin/luajit -- .deps/usr/bin/busted --lpath="./build/?.lua" test/unit/
nvim 进程(其 PID 为 1234,提示:正在运行的 Nvim 实例的 PID 可以通过调用 getpid() 获得),例如gdb -tui -p 1234 build/bin/nvim
gdb 交互式提示。您可以随时break foo 在 foo() 函数上设置断点n 跨过下一条语句<Enter> 重复上一个命令s 进入下一条语句c 继续执行finish 退出当前函数p zub 打印 zub 的值bt 查看当前位置的回溯(调用栈)CTRL-x CTRL-a 或 tui enable 以显示当前调试上下文中源文件的 TUI 视图。这非常有用,因为它避免了对 gdb“前端”的需求。<up> 和 <down> 滚动源文件视图set record full insn-number-max unlimited
continue 一段时间(至少要等到 main() 执行为止)record
revert-next、reverse-step 等命令倒带调试器gdb 客户端连接到同一个正在运行的 nvim 进程,或者您可能希望使用本地 gdb 连接到远程 nvim 进程。使用 gdbserver,您可以附加到单个进程并从多个 gdb 客户端控制该进程。nvim 的 gdbserver,如下所示gdbserver :6666 build/bin/nvim 2> gdbserver.log
gdbserver 现在正在侦听端口 6666。然后,您需要在另一个终端中附加到此调试会话gdb build/bin/nvim
gdb 后,您需要附加到远程会话(gdb) target remote localhost:6666
signal (SIGTTOU, SIG_IGN);
if (!tcsetpgrp(data->input.in_fd, getpid())) {
perror("tcsetpgrp failed");
}
tui.c:terminfo_start 中。gdbserver 方法快速启动调试会话。此示例 local.mk 将在您键入 make debug 时创建调试会话。.PHONY: dbg-start dbg-attach debug build
build:
@$(MAKE) nvim
dbg-start: build
@tmux new-window -n 'dbg-neovim' 'gdbserver :6666 ./build/bin/nvim -D'
dbg-attach:
@tmux new-window -n 'dbg-cgdb' 'cgdb -x gdb_start.sh ./build/bin/nvim'
debug: dbg-start dbg-attach
gdb_start.sh 包含在调试器启动时调用的 gdb 命令。它需要附加到由 dbg-start 规则启动的服务器。例如(gdb) target remote localhost:6666 (gdb) br main