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
unlimited
ulimit -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